小毛
Lv 5
小毛 asked in 電腦與網際網路程式設計 · 1 decade ago

Win API keybd_event 產生鍵盤事件 被鎖定

Win API keybd_event 產生鍵盤事件 被鎖定

如果 keybd_event 被鎖定了 請問 有無任何方法解除

或者 可以有另外的方法產生 鍵盤事件 and 滑鼠事件

這是我發現 有些軟體會鎖定 不知道如何解決

Update:

win API 被鎖定了 無法使用

模擬輸入 就沒用了阿= =...

是我看不懂 還是 你的認知跟我不同...

我說過了喔 宣告win api 就死了!!! 被鎖住了

Update 2:

我不是 被按鍵攔截 我是被Win API鎖住

基本上 完全不能使用到keybd_event

Update 3:

to:program 阿邦

那要從硬體層面去解決,就像我說的,自己用單晶片寫一個可以模擬鍵盤、滑鼠的程式去解決

可是我沒看懂你的半個字耶...如何解決呢...

Update 4:

嗯 我開了遊戲 他鎖掉了這個API 導致我無法宣告

不過你說喚一個道也不算不能 但是沒有根治

你說的方法我要在研究看看 有點難看懂

Update 5:

取得該遊戲視窗的 hWnd

這個我會 但是其他問題很嚴重...

2 Answers

Rating
  • shege
    Lv 4
    1 decade ago
    Favorite Answer

    我是用模擬鍵盤訊的方式來做,你得懂迴圈訊息這玩意,另外,人家的程式吃什麼按鍵碼請自行研究。

    按鍵的訊息攔截,滑鼠的訊息模擬。

    先查到按鍵訊息是什麼,再去改寫滑鼠訊息模擬,好替代你需要的功能。其他的,還是請你多加研究。

    揭開訊息迴圈的神秘面紗,本文必讀。

    2009-07-15 10:33:40 補充:

    依專業的術語來講:是這支 API 被攔截了,造成需要用到的程式無法正常運作。如果您堅持要使用它,那麼,請先自己攔截它之後取得原始進入點,才去執行您所謂的「軟體會鎖定」的程式。

    既然無法使用該 API ,換支行不行?總不會每個 API 都被鎖吧?

    您的要求是產生鍵盤和滑鼠的事件, SendMessage 是透過系統直接發送給視窗訊息,它比較複雜,也包含了您需要的功能,得花時間研究而已。

    最後,請問您是在 VB 的 IDE 環境下執行?

    2009-07-17 09:08:04 補充:

    可以使用 SendMessage 這支 API 來取代滑鼠跟鍵盤的訊息,不清楚你的執行順序為何,無法判斷出為何不能宣告,是否是先執行了其它程式之後,才進 VB 裡執行寫的程式,才遇上這種狀況呢?

    總不會所有的 API 都被鎖吧?

    請詳述您的作業系統與程式執行先後的動作有哪些,謝謝。

    2009-07-18 09:35:35 補充:

    keybd_event 內部還是會使用 SendMessage 或 PostMessage 這兩支 API 來處理,而 keybd_event 是有針對性的處理,遊戲只要擋掉它就好了,再不然你要學會 Hooks (掛勾,或稱攔截),取得原始 keybd_event 進入點來解決,但是要比遊戲早開才有作用。

    至於我提供的方法,你要先學會取得該遊戲視窗的 hWnd 屬性,才可以使用這兩支 API ,雖然會麻煩一點,至少很多遊戲都可以適用。

    這是程式跟作業系統間的執行流程,有點硬,請加油。

    2009-07-20 10:10:45 補充:

    這個你只能慢慢來,因為測試方面會很麻煩,因為很容易搞不清楚有沒

    有成功,得有耐心的慢慢玩下去,的確很枯燥。

    提醒一下,滑鼠的座標得用該視窗內的座標哦,不是桌面的座標,不然怎麼點都會點不到。鍵盤的部分,輸入文字與輸入按鍵是兩種不同的工作,訊息自然也有差別。

    因為我不清楚你要對付的遊戲是什麼,無法給出更多的建議,我目前只有玩一款而已。

    Source(s): shege
  • 1 decade ago

    自己做一個模擬鍵盤、滑鼠的電路,從USB送訊號進去

    2009-07-16 19:57:31 補充:

    那要從硬體層面去解決,就像我說的,自己用單晶片寫一個可以模擬鍵盤、滑鼠的程式去解決

Still have questions? Get your answers by asking now.