Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Переключение языка ввода с помощью SendInput()


Автор: malor 19.7.2011, 22:26
Запустил программу:
Код
void SendKey(int vkCode, int down)
{
    INPUT keyEvent = {0};

    keyEvent.type = INPUT_KEYBOARD;
    keyEvent.ki.wVk = vkCode;
    keyEvent.ki.wScan = MapVirtualKey(vkCode, 0);

    if (!down) 
    {
      keyEvent.ki.dwFlags = KEYEVENTF_KEYUP;
    }

    SendInput(1, &keyEvent, sizeof(keyEvent));
}


int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int cmdShow)
{
    SendKey(162, 1);        // Ctrl прижат 
    SendKey(160, 1);        // Shift прижат
    SendKey(162, 0);        // Ctrl отпущен 
    SendKey(160, 0);        // Shift отпущен

    return 0;
}
Судя по указанным у трея буквам язык сменился. Скажем, был EN, а после отработки программы стал RU. Переключаюсь в какое-нибудь приложение по Alt+Tab и в этот момент буквы меняются с RU на EN.

Если перед запуском программы стояло RU, то станет EN и при перещелкивании приложений по Alt+Tab никуда EN не денется. 
Что за поведение?

Автор: bsa 19.7.2011, 23:26
Нормальное поведение - у каждого окна свой язык ввода.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)