Всем привет. Написал программу которая эмулирует нажатие клавиш на клавиатуре в определённой последовательности. Все прекрасно работает, проблема с клавишами F1-F12 как их нажать? Клавише F1 соответствует код 112 но нажатия не происходит. Остальные клавиши работают прекрасно.
| Код | #include <windows.h>
DWORD SendScanCode(WORD scan, BOOL up) // посылает нажатие или отпускание клавиши со сканкодом scan // если up == TRUE то это событие отпускания, иначе нажатия // возвращает NO_ERROR в случае успеха или код ошибки { INPUT inp = {0}; inp.type = INPUT_KEYBOARD; inp.ki.wScan = scan; inp.ki.dwFlags = KEYEVENTF_SCANCODE | (up ? KEYEVENTF_KEYUP : 0); return SendInput(1, &inp, sizeof(inp)) ? NO_ERROR : GetLastError(); }
DWORD SendVirtualKey(UINT vk, BOOL up) // посылает нажатие или отпускание виртуальной клавиши с кодом vk // если up == TRUE то это событие отпускания, иначе нажатия // возвращает NO_ERROR в случае успеха или код ошибки { UINT scan = MapVirtualKey(vk, MAPVK_VK_TO_VSC); // конвертируем виртуальный код в сканкод return scan ? SendScanCode(scan, up) : ERROR_NO_UNICODE_TRANSLATION; // если конверсия не удалась, то возвращаем // ERROR_NO_UNICODE_TRANSLATION. // Если трансляция есть, то посылаем полученный сканкод }
void main() { bool dowork = TRUE;//работа цикла(да/нет) while(dowork == TRUE)//цикл работает пока dowork = TRUE { if(GetAsyncKeyState(49))//если нажата цифра 1, то { SendVirtualKey(VK_TAB, FALSE);//создаём нажатие Tab SendVirtualKey(VK_TAB, TRUE);//убираем нажатие Tab } Sleep(100);//выжидаем 100 мс для уменьшения нагрузки на процессор(главная задержка цикла) } }
|
Подскажите пожалуйста, где промах? |