имитация нажатия клавиатуры с++
Пробовал 2 метода имитации нажатия клавиатуры в hwnd. Ни один из не работает. На формах полазил,тоже ничего не получается. PostMessage(handle, WM_KEYDOWN, VK_A, 0) - Тоже не работает Код:
HWND handle = FindWindow(L"Notepad",NULL);
if (handle) {
cout << handle;
SendMessage(handle, WM_SETFOCUS, VK_Q, 0);
}
else {
cout << "None" << endl;
}
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Зачем WM_SETFOCUS передавать код клавиши? Этот параметр для извещения о том, от какого окна перешёл фокус.
А с нажатием - нужно передать и нажатие, и отжатие (WM_KEYUP). И использовать метод посылки, задействующий очередь сообщений - PostMessage(...);.
Кроме того, есть SendInput(...); и устаревший keybd_event(...);
Автор решения: SKIP
→ Ссылка
В текущее окно:
keybd_event('C', 0, 0, 0);
keybd_event('C', 0, KEYEVENTF_KEYUP, 0);
В любое определенное по HWND:
HWND wndHndl = FindWindow(_T("ApplicationName"), NULL);
PostMessage(wndHndl, WM_KEYDOWN, VK_C, 0);