如何使用Windows API將鍵擊發送到窗口而不必激活它?我已經創建了一個應用程序,它將命令發送到激活的窗口。我希望能夠在我的進程運行時使用計算機,因為只要我將焦點切換到另一個窗口,通過發送鍵發送的擊鍵將轉到我剛切換到的窗口。 目前我使用Windows API中的FindWindow,IsIconic和ShowWindow。我必須檢查窗口是否有FindWindow,并將我的對象設置為該調用返回的特定窗口,然后檢查是否使用IsIconic最小化并調用ShowWindow,如果是,最后我必須調用Interaction.AppActivate將焦點設置到該窗口。所有這一切都在我發送擊鍵之前完成。似乎應該有一種方法來發送擊鍵而不必顯示窗口并激活它。最重要的是當我的應用程序運行按鍵時,我無法在計算機上執行任何操作。
3 回答

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
一旦你有了Windows HWND,就可以直接將SendMessage()WM_KEYDOWN和WM_KEYUP消息發送到它的消息隊列。窗口不必是活動的。
但是,請理解這取決于目標應用程序如何處理鍵盤輸入。有幾種不同的方法來處理它。
WM_KEYUP / WM_KEYDOWN是最常見的,有些應用程序只處理一個或另一個(通常是WM_KEYDOWN)。
WM_CHAR也很常見
某些程序使用GetAsyncKeyState,GetKeyState或GetKeyboardState。這是非常不尋常的,但有效地防止了SendMessage()的按鍵注入。如果是這種情況,則回退到keybd_event(),它由鍵盤驅動程序直接處理。當然窗口必須是活動的
- 3 回答
- 0 關注
- 1046 瀏覽
添加回答
舉報
0/150
提交
取消