我正在開發一個項目,需要使用windows.h頭文件在Microsoft Visual Studio中編碼的虛擬輸入。要做到這一點,我使用的keybd_event()方法和VkKeyScan()方法:C虛擬鍵盤輸入選擇性工作
keybd_event(VkKeyScan('w'), 0, 0, 0);
keybd_event(VkKeyScan('w'), 0, KEYEVENTF_KEYUP, 0);
但是,虛擬輸入僅被一些程序,如記事本,命令提示符,瀏覽器和其他應用程序所識別使用文本字段。我的項目的虛擬輸入的目的是使用客戶端來控制「VisualGameBoyAdvance」,它需要鍵盤輸入,然後將其轉換爲命令,如'w'= start,'z'=一個按鈕等。
爲什麼在文本字段中使用應用程序時會讀取虛擬輸入,而不是命令?是否有其他方法的Windows.h頭文件或有更好的方法在頭中?
更新:我一直在嘗試使用VkKeyScanEx()作爲一種替代方法,將虛擬輸入作爲一個黑暗中的努力。如何指定我的輸入區域設置標識符?我一直試圖使用UTF-8和en_AU.UTF-8,但沒有運氣。是否有翻譯如何指定的圖表?
我也使用
keybd_event(GetKeyState('w'), 0, 0, 0);
keybd_event(GetKeyState('w'), 0, KEYEVENTF_KEYUP, 0);
試過這並沒有在所有的工作,並試圖
while(1){
/*Sleep(1000);
keybd_event(GetKeyState('w'), 0, 0, 0);
keybd_event(GetKeyState('w'), 0, KEYEVENTF_KEYUP, 0);*/
// Pause for 5 seconds.
Sleep(500);
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
// Press the "W" key
ip.ki.wVk = 0x57; // virtual-key code for the "a" key
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
// Release the "A" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
// Exit normally
}