Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > симуляция нажатия клавиш


Автор: Leopard255 28.5.2013, 13:41
Отсылаю окну нажатие клавиши и отпускание, окно рисует один символ.
Как заставить его повторять символы после нажатия до отпускания?
Или их нужно посылать самому? ( тогда с какими параметрами lParam ?)

Код


keybd(VK_SPACE, 0, 0,0);  //Нажимаем клавишу пробел        
::Sleep(20000 );
keybd(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); //Отпускаем


void keybd(BYTE bVk, BYTE bScan, DWORD dwFlags, ULONG_PTR dwExtraInfo)
{
    UINT Msg;
    LPARAM lParam=0;

    if (dwFlags == KEYEVENTF_KEYUP)
    {
        Msg = WM_KEYUP;
        lParam|= 1 << 31 | 1 << 30 | MapVirtualKey(bVk, 0) << 16 | 1 ;
    }
    else
    {
        Msg = WM_KEYDOWN;        
        lParam|= MapVirtualKey(bVk, 0) << 16 | 1 ;
    }
    PostMessageW(m_handle, Msg, bVk, lParam);

}

Автор: volatile 28.5.2013, 23:42
Цитата(Leopard255 @  28.5.2013,  13:41 Найти цитируемый пост)
Или их нужно посылать самому? ( тогда с какими параметрами lParam ?)

Посылаете только WM_KEYDOWN, без WM_KEYUP.  lParam такой-же как и при обычном WM_KEYDOWN.
WM_KEYUP посылайте только когда клавишу отпускают  (1 раз).



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