[英]Both Java and C++ Refuse to Emulate Arrow Keys?
好吧 這真讓我發瘋。 我正在用Java構建應用程序,它要求模擬鍵盤按鍵。 就像,我想欺騙整個計算機,以為正在按下某個鍵。 (不用擔心,我的意圖不是惡意的:P)問題是,我使用Java的Robot類來模擬按鍵,並且存在一個錯誤,該錯誤不允許在某些應用程序中按下箭頭鍵,無論出於何種原因。
因此,我想我將只制作一個小型C ++程序來處理輸入模擬並從Java調用它。 但是,這里有一個關鍵點:箭頭鍵對於某些程序仍然不起作用。 就像,它只是沒有注冊。 據我所知,它們是相同的程序,不適用於Java。
是否有任何方法可以在所有程序中100%地模擬箭頭鍵的按下? 目前,我可以使用任何語言。
這很重要,這是我到目前為止擁有的C ++程序。
#define WINVER 0x0500
#include <windows.h>
#include <iostream>
#include <cstring>
int main()
{
INPUT ip;
Sleep(2000);
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = VK_RIGHT;
ip.ki.dwFlags = 0;
SendInput(1, &ip, sizeof(INPUT));
Sleep(1000);
ip.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &ip, sizeof(INPUT));
return 0;
}
我真的希望有人能幫助我,因為我沒有主意。
如果必須要在Windows中的所有應用程序上運行都很重要,則可能必須編寫一個模擬HID的驅動程序-在Windows中將驅動程序安裝並注冊為鍵盤。 聽起來需要做很多工作,但是Microsoft具有Windows驅動程序工具包,並且Windows驅動程序工具包示例包中有一些有趣的示例,您可以簽出: https : //msdn.microsoft.com/zh-cn/library/ ff554118(v = vs.85).aspx
由於您的C ++程序,我假設您只需要Windows即可運行。
您確實可以使用C ++使用SendKeys類來做到這一點。 如本文鏈接的文章中詳述 。
盡管不推薦使用 keybd_event()
但它是合成按鍵的另一個函數。 只要目標程序有重點,按鍵代碼就會顯示在按鍵記錄器上。 模擬開始菜單按鍵就這么簡單-
#include<iostream>
#include<windows.h>
using namespace std;
int main(){
cout<<"Standby : Simulating start menu key press \n\n";
keybd_event(VK_LWIN, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
若要模擬向上和向下按下的箭頭鍵,請嘗試以下操作:
// simulate RIGHT key press
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0,KEYEVENTF_KEYUP,0);
// simulate LEFT key press
keybd_event(VK_LEFT,0,0,0);
keybd_event(VK_LEFT,0,KEYEVENTF_KEYUP,0);
// simulate UP key press
keybd_event(VK_UP,0,0,0);
keybd_event(VK_UP,0,KEYEVENTF_KEYUP,0);
// simulate DOWN key press
keybd_event(VK_DOWN,0,0,0);
keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
keybd_event(不建議使用): https : //msdn.microsoft.com/zh-cn/library/ee504289.aspx
keybd_event: https ://msdn.microsoft.com/zh-cn/library/windows/desktop/ms646304( v= vs.85).aspx
虛擬鍵代碼: https : //msdn.microsoft.com/zh-cn/library/windows/desktop/dd375731(v=vs.85).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.