void GetLayOutInForm() // метод получения раскладки, если активное окно - наша программа. не надо получать хэндл активного окна и вот это вот все { InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage; // получаем активную раскладку клавиатуры if (myCurrentLanguage != null) // если раскладка была получена { String txt = myCurrentLanguage.LayoutName; // получаем имя раскладки if (CurrentLayout != txt) // если раскладка изменилась { if (txt == "Русская") // если имя русская { PortWrite("1,0,2,0,255,0,150;"); // пишем в порт зеленый цвет lLangStatus.Text = "RU"; // пишем в лабель } else if (txt == "США") // если имя раскладки США { PortWrite("1,0,2,0,0,250,150;"); // пишем в порт синий цвет lLangStatus.Text = "EN"; // пишем в лабель } CurrentLayout = txt; // запоминаем прошлую раскладку } } bool caps = KeyboardLayoutTools.GetKeyS(Keys.CapsLock); if (caps) { LCaps.Text = "Вкл"; } else { LCaps.Text = "Выкл"; } bool num = KeyboardLayoutTools.GetKeyS(Keys.NumLock); if (num) { LNum.Text = "Вкл"; } else { LNum.Text = "Выкл"; } bool scroll = KeyboardLayoutTools.GetKeyS(Keys.Scroll); if (scroll) { LScr.Text = "Вкл"; } else { LScr.Text = "Выкл"; } }
void GetLayOut() // метод определения раскладки активного окна { bool changed = false; int lks; IntPtr selectedWindow = KeyboardLayoutTools.NativeMethods.GetForegroundWindow(); // получаем id активного окна int currId; if (KeyboardLayoutTools.CheckKeyboardLayout(Handle, selectedWindow, out currId)) // функция, пишущая в указанную переменную currID раскладку, если она была изменена { switch (currId) { case 1033: //английский PortWrite("1,0,2,0,255,0,150;"); break; case 1049: //русский PortWrite("1,0,2,0,0,250,150;"); break; } } bool caps = KeyboardLayoutTools.GetKeyS(Keys.CapsLock); if (caps != CurrentCaps) { if (caps) { PortWrite("1,3,3,0,0,255,150;"); } else { PortWrite("1,3,3,0,0,0,150;"); } } CurrentCaps = caps; bool num = KeyboardLayoutTools.GetKeyS(Keys.NumLock); if (num != CurrentNum) { if (num) { PortWrite("1,4,4,0,0,255,150;"); } else { PortWrite("1,4,4,0,0,0,150;"); } } CurrentNum = num; bool scroll = KeyboardLayoutTools.GetKeyS(Keys.Scroll); if (scroll != CurrentScr) { if (scroll) { PortWrite("1,5,5,0,0,255,150;"); } else { PortWrite("1,5,5,0,0,0,150;"); } } CurrentScr = scroll; }