亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Windows API將鍵擊發送到窗口而不必激活它?

如何使用Windows API將鍵擊發送到窗口而不必激活它?

墨色風雨 2019-08-28 15:11:33
如何使用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(),它由鍵盤驅動程序直接處理。當然窗口必須是活動的


查看完整回答
反對 回復 2019-08-28
  • 3 回答
  • 0 關注
  • 1046 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號