一、滑鼠鉤子型別有兩個,乙個是wh_mouse,另乙個是wh_mouse_ll,其中wh_mouse只能監控鉤子所在模組的滑鼠事件,而wh_mouse_ll可以截獲整個系統所有模組的滑鼠事件。
因為我們要獲取整個系統的滑鼠事件,所以我們用wh_mouse_ll,並用win32彙編編寫,其中介面和思路參考了
二、滑鼠鉤子只能存在dll中,所以我們需要建立乙個dll檔案,用於安裝鉤子和解除安裝鉤子,並把滑鼠資訊傳送給主程式,下面是dll檔案部分**,有鉤子的安裝
installhook proc _hwnd,_dwmessage
push _hwnd
pop hwnd;儲存主程式的視窗控制代碼
push _dwmessage
pop dwmessage;儲存要傳送給主程式的訊息型別
invoke setwindowshookex,wh_mouse_ll,\
addr hookproc,hinstance,null
mov hhook,eax
retinstallhook endp
鉤子解除安裝
uninstallhook
proc
invoke unhookwindowshookex,hhook
retuninstallhook endp
鉤子處理過程比較簡單,直接傳送自定義的訊息給主程式
hookproc proc _dwcode,_wparam,_lparam
local
@szkeystate[256]:byte
invoke callnexthookex,hhook,_dwcode,\
_wparam,_lparam
invoke sendmessage,hwnd,dwmessage,\
_wparam,_lparam
xor eax,eax
rethookproc endp
三、主程式採用動態裝入dll方式載入生成的dll檔案,並在視窗過程處理收到滑鼠資訊,用列表控制項顯示收到的wparam,lparam值,滑鼠訊息、滑鼠座標 VB 全域性鍵盤 滑鼠鉤子
if code hc action then copymemory mousemsg,lparam,lenb mousemsg form1.txtmsg 1 text x str mousemsg.x y str mousemsg.y form1.txthwnd 1 format wparam,0 ...
c 滑鼠鉤子全解
using system.runtime.interopservices 呼叫作業系統動態鏈結庫 using system.diagnostics using system.windows.forms namespace util if hook null hook.uninstallhook pu...
Hook入門之滑鼠鉤子
之前有一次吃飯的時候,聽前輩聊到猜想某某輸入法的鉤子,導致了我們軟體crash了,問使用者是不是用的某某輸入法。當時就比較好奇鉤子是啥。22章 dll注入和 api攔截 參考網上獲得的滑鼠鉤子的源 解析和學習一下做乙個簡單的滑鼠鉤子的流程和步驟,以及涉及到的知識。1 首先,新建dll模組,在 dll...