Exemplo n.º 1
0
        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 = "Выкл";
            }
        }
Exemplo n.º 2
0
        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;
        }