Сегодня 29 апреля, понедельник ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Справочник по C#
Справочник по C#
Голосов: 1
Адрес блога: http://www.csharpcoderr.com/
Добавлен: 2012-11-28 00:46:26
 

Отслеживаем состояние раскладки клавиатуры

2012-10-19 14:25:12 (читать в оригинале)





public Form1()
{
    InitializeComponent();
    timer1 = new Timer();
    this.timer1.Enabled = true;
    this.timer1.Interval = 777;
    this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
    this.TopMost = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
    label1.Text = GetKeyboardLayoutId();
}

[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();

private static InputLanguageCollection _InstalledInputLanguages;
// Идентификатор активного потока
private static int _ProcessId;
// Текущий язык ввода
private static string _CurrentInputLanguage;


private 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;

}

Тэги: form, keyboard, system, winapi, window

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.