SetWindowsHookEx函式引數詳解

2021-05-09 15:10:09 字數 830 閱讀 4970

下系統鉤子(鍵盤鉤子,滑鼠鉤子等等)已是我們最長用的手段,要做鉤子程式就必須用到下面這幾個函式使用動態鏈結庫(dll),即要實現全域性系統鉤子。這裡就這幾個函式的引數做一下詳細的講解。

需要使用到windowsapi中的兩個函式: 

一. hhook setwindowshookex( 

int idhook,         //要安裝的鉤子型別 (參考下面的idhook取值)

hookproc lpfn,   //鉤子過程的指標 ,也即攔截到指定系統訊息後的預處理過程,須定義在dll中,

hinstance hmod,    //應用程式例項的控制代碼 如果是全域性鉤子, hinstance是dll控制代碼(dllmain中給的模組位址。就是包含hookproc的動態庫載入位址。否則給0就可以了,即勾自己。 

dword dwthreadid;   //要安裝鉤子的執行緒id ,指定被監視的執行緒,如果明確指定了某個執行緒的id就只監視該執行緒,此時的鉤子即為執行緒鉤子;如果該引數被設定為0,則表示此鉤子為監視系統所有執行緒的全域性鉤子。);

使用wh_cbt系統級鉤子,當windows啟用、產生、釋放(關閉)、最小化、最大化或改變視窗時都將觸發此事件,我們在自定義訊息函式中只處理關閉視窗的訊息,在自定義的鉤子函式若返回0則允許對窗體的操作,返回1則阻止視窗最大化、最小化等操作。另外此鉤子必須使用動態鏈結庫(dll)也就是鉤子函式必須寫在dll裡。

二. bool unhookwindowshookex( 

hhook hhk   //要登出的鉤子控制代碼

)配合這兩個函式還要配合一些相應的**函式,乙個鉤子就做好了。鉤子的好處說不完。具體功能就看你發揮了。(程式設計世界www.ibiancheng.cn原創)

函式msgsnd 及函式msgrcv 引數詳解

最近看system v訊息佇列,在看到msgsnd 這個函式時,發現了乙個錯誤。注 我看的是unix網路程式設計卷二 程序間通訊 第二版 msgsnd 函式 追加一條新訊息到訊息佇列的系統呼叫語法 include int msgsnd int msqid,const void ptr,size t ...

指標作為函式引數,C語言指標作為函式引數詳解

include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...

javascript中函式引數是evt詳解

一般情況下,在js中函式可能沒有引數,也有特殊情況,舉個例子 function togglecolor evt else if thissquare.classname else 先簡單介紹一下這個函式的作用 在乙個包含了若干卡片 的.html檔案中,單擊任何乙個小卡片改變卡片的背景顏色,再次單擊該...