題主想做個能自動刷一個簡單游戲場景的程式,根據截圖來判斷應該怎么進行相應操作,基本搞好后滑鼠點擊事件卻出了問題。
SetCursorPos();mouse_event();
發現這幾個函式根本不起作用!后來了解了原因有兩個:
1.點擊游戲后,程式就失去了焦點,同時滑鼠也被游戲獲取,因此無法設定滑鼠移動
2.游戲應該有個機制,就是當自身游戲不是焦點時,不接識訓鼠事件,所以當沒手動點擊游戲時,雖然能控制滑鼠移動,卻無法點擊游戲。
由于遇到這兩點難題,結合實際手握的滑鼠無論如何都能起作用,因此想問下c++有沒有能直接硬體層面的模擬滑鼠事件的代碼,比如滑鼠宏,能模擬手握的這個實際滑鼠的操作,或者誰能給下其他思路
uj5u.com熱心網友回復:
。。。。。。uj5u.com熱心網友回復:
游戲一般用的是DirectInput,不是Windows訊息。uj5u.com熱心網友回復:
那你說的這個能讓我大部分游戲的保護機制嗎
uj5u.com熱心網友回復:
你說的那些問題不是保護機制,而是游戲使用DX所必然造成的uj5u.com熱心網友回復:
所以我在撰寫的時候也使用這個就行了?
uj5u.com熱心網友回復:
SetWindowsHookEx設定鍵盤滑鼠鉤子uj5u.com熱心網友回復:
不行的,這是 DirectInput 的固有限制,它會阻止視窗失去焦點時的輸入(我研究的是舊版,簡單來說是先判斷自己是否處于前臺,然后再用 GetCursorPos 等函式獲取滑鼠輸入,新版除了換成 WM_INPUT 應該沒有區別),而游戲對此完全無感知(最多知道設備丟失了),所以我所知的唯一方法是 hook DirectInput。uj5u.com熱心網友回復:
具體是怎么做的 有沒有檔案可以學習下uj5u.com熱心網友回復:
hook已經了解了 就是截取訊息 自己處理 所以邏輯是截取這個游戲行程的訊息 可是如果我沒有鍵盤和滑鼠輸入的時候hook就是不生效的是吧?就我現在監控游戲畫面 同時hook輸入 要實作在監控畫面改變做出相應動作時應該怎么做 要一直按住某個鍵 然后截取這個鍵的訊息根據自己需要動作把這個鍵訊息改成我們要的動作嗎 能否賜教下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/85989.html
標籤:工具平臺和程序庫
上一篇:C++程式解釋
