Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
27 / 27 / 3
Регистрация: 17.07.2008
Сообщений: 224
1

По Handle отправляется русский текст, хотя отправлял на английском

12.03.2014, 11:05. Показов 1994. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Необходимо отправить в окно другого приложения текст. Отправляю на английском, а приходит на русском. То есть не "help", а "рудз". В чем может быть проблема? Текст берется из textbox, когда пишу в лоб
C#
1
SendKeys.SendWait("help");
что необходимо передать, то все отлично.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    [DllImport("user32.dll", SetLastError = true)]
        static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
 
        [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
        public static extern IntPtr FindWindow(string lpClassName,
            string lpWindowName);
 
        [DllImport("USER32.DLL")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int PostMessage(IntPtr hwnd, int wMsg, IntPtr wParam, IntPtr lParam);
 
        delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
 
        [DllImport("user32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
 
        [DllImport("user32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool IsWindowVisible(IntPtr hWnd);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern int GetWindowTextLength(IntPtr hWnd);
 
        List<IntPtr> ListHandles = new List<IntPtr>();
 
        string GetWindowText(IntPtr hWnd)
        {
            int len = GetWindowTextLength(hWnd) + 1;
            StringBuilder sb = new StringBuilder(len);
            len = GetWindowText(hWnd, sb, len);
            return sb.ToString(0, len);
        }
 
        private void btnSearchHwnd_Click(object sender, EventArgs e)
        {
            IntPtr calculatorHandle = FindWindow("Notepad", "Безымянный — Блокнот");
 
            if (calculatorHandle == IntPtr.Zero)
            {
                MessageBox.Show("Calculator is not running.");
                return;
            }
 
            SetForegroundWindow(calculatorHandle);
            SendKeys.SendWait(textBox1.Text);
             SendKeys.Send("{ENTER}");
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.03.2014, 11:05
Ответы с готовыми решениями:

Шаблон на английском при замене на русский текст пропадает
Шаблон на английском при замене на русский текст пропадает, причем на Англ. текст есть Русский...

Не отправляется текст, но отправляется вложение
Не показывается текст mail php, а вложение идет. Вот мой код, приходит вложенный файл, но не...

Используя popen сделать, чтобы один процесс отправлял текст, второй принимал и выводил
В общем задача такая, используя popen сделать, чтобы один процесс отправлял текст, второй принимал...

Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой...

4
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.03.2014, 11:39 2
Konstantin1706, афайк раскладка в разных окнах может быть разной. Например, тут я сейчас пишу на русском, переключился на студию - там сразу выставился английский (я сам раскладку не переключал). Значит нужно сменить раскладку на целевом окне.
1
27 / 27 / 3
Регистрация: 17.07.2008
Сообщений: 224
12.03.2014, 13:07  [ТС] 3
Спасибо, все верно. Так что мне придется либо вручную переключать раскладку, либо программно.
Нашел следующее:
C#
1
InputLanguage.CurrentInputLanguage =  InputLanguage.FromCulture(new System.Globalization.CultureInfo("en-US"));
Как мне это передать программе?
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
12.03.2014, 13:09 4
Лучший ответ Сообщение было отмечено Konstantin1706 как решение

Решение

LoadKeyboardLayout
ActivateKeyboardLayout
GetKeyboardLayout
1
27 / 27 / 3
Регистрация: 17.07.2008
Сообщений: 224
12.03.2014, 13:17  [ТС] 5
Сейчас буду разбираться, спасибо.
0
12.03.2014, 13:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2014, 13:17
Помогаю со студенческими работами здесь

Написать макрос, который искал бы на листе нужное слово на английском и переводил его на русский
Здравствуйте, подскажите, как можно написать макрос, который искал бы на листе нужное слово на англ...

При нажатии кнопки, созданной функцией отправляется запрос, хотя не должен
Добрый день. Я разрабатываю сайт и на нём использую js. При помощи этой функции: function...

Текст на английском. Написать текст на тему "Plans for holyday"
Кто английский хорошо знает? Мне нужно написать текст на тему &quot;Plans for holyday&quot;. Нужно чтоб планы...

РУсский текст в VB 5.0 текст в программном коде, который был на русском стал нечитабельным.
Не знаю почему, но теперь при просмотре кода проекта все комментарии, тесты сообщений и т.д.,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru