Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2015, 19:29   #1
CloudStrife
Новичок
Джуниор
 
Регистрация: 15.12.2015
Сообщений: 24
По умолчанию Net 3.0 C# Смена языка - Определитель

Здравствуйте!
Не могу понять в чём проблема, пытаюсь использовать клавиатурный хук для захвата клавиши! ( всё хорошо но есть одна проблема с распределителями языков! ( RUS - ENG )

И так:
Для определения языка использую класс:
Код:
public class language
{
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern IntPtr GetKeyboardLayout(int WindowsThreadProcessID);
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern int GetWindowThreadProcessId(IntPtr handleWindow, out int lpdwProcessID);
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern IntPtr GetForegroundWindow();
    public static InputLanguageCollection InstalledInputLanguages;
    public static int _ProcessId;
    public static string _CurrentInputLanguage;

    public static string GetKeyboardLayoutId()
    {
        InstalledInputLanguages = InputLanguage.InstalledInputLanguages;
        IntPtr hWnd = GetForegroundWindow();
        int WinThreadProcId = GetWindowThreadProcessId(hWnd, out _ProcessId);
        IntPtr KeybLayout = GetKeyboardLayout(WinThreadProcId);
        for (int i = 0; i < InstalledInputLanguages.Count; i++)
        {
            if (KeybLayout == InstalledInputLanguages[i].Handle)
            {
                _CurrentInputLanguage = InstalledInputLanguages[i].Culture.ThreeLetterWindowsLanguageName.ToString();
            }
        }
        return _CurrentInputLanguage;
    }
}
Подключаю в главном :
Код:
Text = language.GetKeyboardLayoutId();
// В заголовке мне пишет: RUS либо ENU при переключение!
Но суть в другом!

Пытаюсь установить связь: Если активна Rus раскладка, то пишем Русскими буквами, если Eng, то Английскими буквами!
Код:
if (InputLanguage.CurrentInputLanguage.Culture.ToString() == "en-US") // Проверка на Eng раскладку
                {
                    if (key == KeyboardHook.VKeys.KEY_A)
                    {
                        textBox1.text += "А";
                    }
                }
                else if (InputLanguage.CurrentInputLanguage.Culture.ToString() == "ru-RU") // Проверка Если включена Русская раскладка, то пишем Русскими буквами
                {
                    if (key == KeyboardHook.VKeys.KEY_B)
                    {
                         textBox1.text += "И";
                    }

Проблема в том что при наведение только на форму можно писать Русскими буквами, а Английскими норм вне формы, как заставить писать Русские буквы вне формы ???
Или что посоветуете?

Последний раз редактировалось CloudStrife; 16.12.2015 в 19:32.
CloudStrife вне форума Ответить с цитированием
Старый 16.12.2015, 19:41   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Во первых это регулируется системой. Во вторых на кой оно все надо?
come-on вне форума Ответить с цитированием
Старый 16.12.2015, 19:45   #3
CloudStrife
Новичок
Джуниор
 
Регистрация: 15.12.2015
Сообщений: 24
По умолчанию

Если вы не поняли смысл не нужно писать
CloudStrife вне форума Ответить с цитированием
Старый 16.12.2015, 20:29   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

начнем с того что начиная с Windows 8 вы можете настроить одну раскладку на систему, а не процесс.

во вторых, вам надо хукать глобально клавиатуру, и там уже все это делать, а не локально.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.12.2015, 20:52   #5
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Если вы не поняли смысл не нужно писать
Тогда отвечу вам тем-же
Если не понимаете что и для чего пишете наймите программиста.
come-on вне форума Ответить с цитированием
Старый 16.12.2015, 21:02   #6
CloudStrife
Новичок
Джуниор
 
Регистрация: 15.12.2015
Сообщений: 24
По умолчанию

Вы меня слышите аууу?? ^_^
У меня то всё работает только проблема с фокусом!
Какой локально о чем вы??

Мне всего то и нужно чтобы записывало нажатие клавишь если раскладка переключилась на русскую, то записывало русские буквы, если английская, то англ буквы!

Логику включите прошу
CloudStrife вне форума Ответить с цитированием
Старый 16.12.2015, 23:44   #7
CloudStrife
Новичок
Джуниор
 
Регистрация: 15.12.2015
Сообщений: 24
По умолчанию

СПС ВСЁМ Очень помогли
CloudStrife вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена языка интерфейса Lindemann66 Qt и кроссплатформенное программирование С/С++ 3 08.10.2011 16:09
Смена языка _-Re@l-_ Общие вопросы Delphi 13 10.06.2011 09:00
смена языка Dimarik Visual C++ 2 28.01.2011 22:26
Смена языка) Dmitry96 Общие вопросы Delphi 2 26.12.2010 17:48
Смена языка Simon..14 Общие вопросы C/C++ 2 31.01.2009 15:06