




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、VB模擬按鍵終極教程有了它啥游戲都不怕全局級模擬你會發現,用上邊的方法類比按鍵並不是對全部程式都有效的,有的程式啊,你向它發了一大堆信息,但是它卻一點反應也沒有。這是怎麼回事呢?這就要看具體的情況了,有些程式(特別是一些遊戲)出於某些原由,會嚴禁用戶對它使用類比按鍵程式,這個怎麼實現呢?比方能夠在程式中檢查一下,假如發現自己不是活動視窗,就不接受鍵盤信息。或許仔細檢查一下收到的鍵盤信息,你會發現真實的按鍵和類比的按鍵信息總是有一些小差別,從這些小差別上,目的程式就能判斷出:這是假的!是偽造的!所以,假如用PostMessage發送局部信息類比按鍵不可以功的話,你能夠試一試全局級的鍵盤信息,看看
2、能不可以夠騙過目的程式。類比全局鍵盤信息常見的能夠有以下一些方法:(1)用API函數keybd_event,這個函數能夠用來類比一個鍵盤事件,它的VB聲明為:DeclareSubkeybd_eventLibuser32(ByValbVkAsByte,ByValbScanAsByte,ByValdwFlagsAsLong,ByValdwExtraInfoAsLong)參數bVk表示要類比的按鍵的虛擬碼,bScan表示該按鍵的掃描碼(一般能夠傳0),dwFlags表示是按下鍵還是釋放鍵(按下鍵為0,釋放鍵為2),dwExtraInfo是擴展標誌,一般沒合用。比方要模擬按下A鍵,能夠這樣:Const
3、KEYEVENTF_KEYUP=&H2keybd_eventVK_A,0,0,0按下A鍵1/6keybd_eventVK_A,0,KEYEVENTF_KEYUP,0釋放A鍵注意有時候按鍵的速度不要太快,否則會出問題,能夠用API函數Sleep來進行延時,聲明以下:DeclareSubSleepLibkernel32(ByValdwMillisecondsAsLong)參數dwMilliseconds表示延時的時間,以毫秒為單位。那麼假如要模擬按下功能鍵怎麼做呢?比方要按下Ctrl+C實現拷貝這個功能,能夠這樣:keybd_eventVK_Ctrl,0,0,0按下Ctrl鍵keybd_event
4、VK_C,0,0,0按下C鍵Sleep500延時500毫秒keybd_eventVK_C,0,KEYEVENTF_KEYUP,0釋放C鍵keybd_eventVK_Ctrl,0,KEYEVENTF_KEYUP,0釋放Ctrl鍵好了,現在你能夠試試是否是能夠騙過目的程式了,這個函數對大多數的視窗程式都有效,但是仍舊有一部分遊戲對它產生的鍵盤事件熟視無睹,這時候,你就要用上bScan這個參數了。一般的,bScan都傳0,但是假如目的程式是一些DirectX遊戲,那麼你就需要正確使用這個參數傳入掃描碼,用了它能夠產生正確的硬體事件信息,以被遊戲識別。這樣的話,就能夠寫成這樣:2/6keybd_eve
5、ntVK_A,MapVirtualKey(VK_A,0),0,0按下A鍵keybd_eventVK_A,MapVirtualKey(VK_A,0),KEYEVENTF_KEYUP,0釋放A鍵以上就是用keybd_event函數來類比鍵盤事件。除了這個函數,SendInput函數也能夠類比全局鍵盤事件。SendInput能夠直接把一條信息插入到信息佇列中,算是比較底層的了。它的VB聲明以下:DeclareFunctionSendInputLibuser32.dll(ByValnInputsAsLong,pInputsAsGENERALINPUT,ByValcbSizeAsLong)AsLong參
6、數:nlnprts:定義plnputs指向的結構的數目。plnputs:指向INPUT結構陣列的指標。每個結構代表插人到鍵盤或滑鼠輸入流中的一個事件。cbSize:定義INPUT結構的大小。若cbSize不是INPUT結構的大小,則函數調用失敗。返回值:函數返回被成功地插人鍵盤或滑鼠輸入流中的事件的數目。若要獲得更多的錯誤資訊,能夠調用GetlastError函數。備註:Sendlnput函數將INPUT結構中的事件順序地插入鍵盤或滑鼠的輸入流中。這些事件與用戶插入的(用滑鼠或鍵盤)或調用keybd_event,mouse_event,或其他的Sendlnput插人的鍵盤或滑鼠的輸入流不相容。
7、嗯,這個函數用起來蠻複雜的,因為它的參數都是指標一類的東西。要用它來類比鍵盤輸入,先要構造一組資料結構,把你要類比的鍵盤信息裝進去,然後傳給它。為了方便起見,把它做在一個過程裏面,要用的時候直接調用好了,代碼以下:3/6DeclareFunctionSendInputLibuser32.dll(ByValnInputsAsLong,pInputsAsGENERALINPUT,ByValcbSizeAsLong)AsLongDeclareSubCopyMemoryLibkernel32AliasRtlMoveMemory(pDstAsAny,pSrcAsAny,ByValByteLenAsLon
8、g)TypeGENERALINPUTdwTypeAsLongxi(0To23)AsByteEndTypeTypeKEYBDINPUTwVkAsIntegerwScanAsIntegerdwFlagsAsLongtimeAsLongdwExtraInfoAsLongEndTypeConstINPUT_KEYBOARD=1SubMySendKey(bkeyAsLong)參數bkey傳入要類比按鍵的虛擬碼即可類比按下指定鍵DimGInput(0To1)AsGENERALINPUTDimKInputAsKEYBDINPUTKInput.wVk=bkey你要類比的按鍵4/6KInput.dwFlags=
9、0按下鍵標誌GInput(0).dwType=INPUT_KEYBOARDCopyMemoryGInput(0).xi(0),KInput,Len(KInput)這個函數用來把記憶體中KInput的資料複製到GInputKInput.wVk=bkeyKInput.dwFlags=KEYEVENTF_KEYUP釋放按鍵GInput(1).dwType=INPUT_KEYBOARD表示該信息為鍵盤信息CopyMemoryGInput(1).xi(0),KInput,Len(KInput)以上工作把按下鍵和釋放鍵共2條鍵盤信息加入到GInput資料結構中SendInput2,GInput(0),Le
10、n(GInput(0)把GInput中寄存的信息插入到信息列隊EndSub除了以上這些,用全局鉤子也能夠類比鍵盤信息。假如你對windows中消息鉤子的用法已經有所瞭解,那麼你能夠通過設置一個全局HOOK來類比鍵盤信息,比方,你能夠用WH_JOURNALPLAYBACK這個鉤子來類比按鍵。WH_JOURNALPLAYBACK是一個系統級的全局鉤子,它和WH_JOURNALRECORD的功能是相對的,常用它們來記錄並重播鍵盤滑鼠操作。WH_JOURNALRECORD鉤子用來將鍵盤滑鼠的操作忠實地記錄下來,記錄下來的資訊能夠保留到檔中,而WH_JOURNALPLAYBACK則能夠重現這些操作。當然
11、亦能夠單獨使用WH_JOURNALPLAYBACK來類比鍵盤操作。你需要第一聲明SetWindowsHookEx函數,它能夠用來安裝信息鉤子:5/6DeclareFunctionSetWindowsHookExLibuser32AliasSetWindowsHookExA(ByValidHookAsLong,ByVallpfnAsLong,ByValhmodAsLong,ByValdwThreadIdAsLong)AsLong先安裝WH_JOURNALPLAYBACK這個鉤子,然後你需要自己寫一個鉤子函數,在系統調用它時,把你要模擬的事件傳遞給鉤子參數lParam所指向的EVENTMSG區域,
12、就能夠達到類比按鍵的見效。不過用這個鉤子類比鍵盤事件有一個副作用,就是它會鎖定真實的滑鼠鍵盤,不過假如你就是想在模擬的時候不會受真實鍵盤操作的干擾,那麼用用它倒是個不錯的想法。3.驅動級模擬假如上邊的方法你都試過了,但是你發現目的程式卻仍舊頑固的不接受你類比的信息,寒還好,我還剩下最後一招,這就是驅動級模擬:直接讀寫鍵盤的硬體埠!有一些使用DirectX介面的遊戲程式,它們在讀取鍵盤操作時繞過了windows的信息機制,而使用DirectInput.這是因為有些遊戲對即時性控制的要求比較高,比方賽車遊戲,要求以最迅速度回應鍵盤輸入。而windows信息由於是佇列形式的,信息在傳遞時會有好多延遲
13、,有時1秒鐘也就傳遞十幾條信息,這個速度達不到遊戲的要求。而DirectInput則繞過了windows信息,直接與鍵盤驅動程式打交道,效率當然提升了好多。所以也就造成,對這樣的程式無論用PostMessage或許是keybd_event都不會有反應,因為這些函數都在較高層。對於這樣的程式,只能用直接讀寫鍵盤埠的方法來類比硬體事件了。要用這個方法來類比鍵盤,需要先瞭解一下鍵盤編程的相關知識6/6內容總結(1)VB模擬按鍵終極教程有了它啥游戲都不怕全局級模擬你會發現,用上邊的方法類比按鍵並不是對全部程式都有效的,有的程式啊,你向它發了一大堆信息,但是它卻一點反應也沒有(2)或許仔細檢查一下收到的鍵盤
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以貸還貸面試題及答案
- 抗菌纖維的環保性能研究考核試卷
- 醫生考研試題及答案
- 沖突解決中的心理安全感營造考核試卷
- 北港集團面試題及答案
- java面試題及答案內置對象
- 中考試題及答案安徽
- 文科幾何試題及答案
- 《推銷實務》課件 項目2 認識崗位-描繪推銷職業畫像
- 流通環節標準化建設要點
- 大學生創新創業劉建華課后參考答案
- 用工情況說明格式及范文
- JCT587-2012 玻璃纖維纏繞增強熱固性樹脂耐腐蝕立式貯罐
- 網絡安全策略優化
- 《飛機電子顯示器顯示符號》
- 國開大學2023年01月11282《社會學概論(本)》期末考試答案
- 中特第五講社會建設天津大學
- 密封條范文模板(A4打印版)
- 施工現場安全交底15篇
- 急救醫學模擬中心建設方案
- 三維激光掃描技術與應用實例-PPT課件
評論
0/150
提交評論