vue八個(gè)鉤子函數(shù) 誰(shuí)能用c語(yǔ)言寫一個(gè)鉤子函數(shù)的例子?
誰(shuí)能用c語(yǔ)言寫一個(gè)鉤子函數(shù)的例子?示例:hWnd hWnd=null//定義為全局變量hhook hkeyboardhhook hmouselresult callback mouseproc(int
誰(shuí)能用c語(yǔ)言寫一個(gè)鉤子函數(shù)的例子?
示例:
hWnd hWnd=null//定義為全局變量
hhook hkeyboard
hhook hmouse
lresult callback mouseproc(int ncode,wParam wParam,lParam lParam)//鼠標(biāo)鉤子函數(shù)
{
return 1//非零值表示當(dāng)前消息已被處理,因此系統(tǒng)不會(huì)通過(guò)消息到目標(biāo)窗口過(guò)程
}
]lresult callback KeyboardProc(int nCode,WPARAM WPARAM,LPARAM LPARAM)
if(VK_F4==WPARAM&;amp(1==(LPARAM>>29&;1))//系統(tǒng)后門:ALT F4 key exit program
{]::SendMessage a(hWnd,WM)uclose,0,0)
定義鉤子函數(shù)
鉤子函數(shù)是一個(gè)特殊的回調(diào)函數(shù)。鉤子監(jiān)控的特定事件發(fā)生后,系統(tǒng)會(huì)調(diào)用鉤子函數(shù)進(jìn)行處理。不同事件的鉤子函數(shù)有不同的形式。以下是鉤子函數(shù)原型的示例:
lresult callback hookproc(int ncode,wParam wParam,lParam lParam)
參數(shù)wParam和lParam包含鉤子消息的信息,如鼠標(biāo)位置、狀態(tài)、鍵盤鍵等。ncode包含有關(guān)消息本身的信息,例如是否將其從消息隊(duì)列中刪除。我們首先在hook函數(shù)中實(shí)現(xiàn)自定義函數(shù),然后調(diào)用函數(shù)CallNextHookEx。將鉤子信息傳遞給鉤子鏈的下一個(gè)鉤子函數(shù)。CallNextHookEx的原型。如下所示:
lresult CallNextHookEx(hhook,HHK,int ncode,wParam,wParam,lParam,lParam)參數(shù)HHK是鉤子句柄。Ncode、wParam和lParam是鉤子函數(shù)。
當(dāng)然,也可以通過(guò)直接返回true來(lái)丟棄消息,這會(huì)阻止消息的傳遞。