青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

幽魂國度

 

鉤子

HHOOK SetWindowsHookEx(                                    //裝載一個鉤子         
    int idHook,                                            //描述被裝載的鉤子的類型,參數見下面
    HOOKPROC lpfn,                               //鉤子回調函數的地址,如果 dwThreadId 為 0 那么這個回調函數會在不同的進程中創(chuàng)建,它必須寫在在DLL中
    HINSTANCE hMod,                                        //DLL的句柄
    DWORD dwThreadId                                    //描述要鉤住的線程ID,如果這個參數為0,則會鉤住桌面上的所有線程
);                                                         //如果函數調用成功,返回值是成功開啟的鉤子句柄,如果失敗,返回值為 0
/*
    idHook 相關的參數:
            WH_CALLWNDPROC                :安裝一個鉤子,監(jiān)視系統(tǒng)發(fā)送給窗口的消息,更多信息如下:
LRESULT CALLBACK CallWndProc(         
                            int nCode,                       //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                            WPARAM wParam,      //描述這個消息是否來自于當前的線程,如果這個消息是來自于當前的線程那么該值為非零,否則該值為零
                            LPARAM lParam           //一個指向 CWPSTRUCT 結構體的指針,更多相關信息如下:
                        );
                                    typedef struct {
                                        LPARAM lParam;                   //消息的擴展信息
                                        WPARAM wParam;                //消息的擴展信息
                                        UINT message;                        //消息
                                        HWND hwnd;                         //接受消息的窗口
                                    } CWPSTRUCT, *PCWPSTRUCT;

            WH_CALLWNDPROCRET            :安裝一個鉤子,監(jiān)視系統(tǒng)發(fā)送已經處理后給窗口的消息,更多信息如下:
                    LRESULT CALLBACK CallWndRetProc(          
                            int nCode,                      //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                            WPARAM wParam,     //描述這個消息是否來自于當前的線程,如果這個消息是來自于當前的線程那么該值為非零,否則該值為零
                            LPARAM lParam         //一個指向 CWPSTRUCT 結構體的指針,更多相關信息如上:
                        );

            WH_CBT                        :安裝一個鉤子,臨視系統(tǒng)發(fā)送給窗口的基本信息(基于計算機培訓的"鉤子"),更多信息如下:
                    LRESULT CALLBACK CBTProc(         
                        int nCode,                        //描述鉤子程序裝如何處理消息,如果 nCode 的值小于零 那么鉤子程序將跳過這個消息.返回調用 CallNextHookEx 得到的返回值,相關值的意義如下
                        WPARAM wParam,        //相關信息參見返回值
                        LPARAM lParam            //相關信息參見返回值
                    );                                    //返回值為參數一相關的值
                                    //        nCode    的相關值
                                        HCBT_ACTIVATE            :系統(tǒng)正要激活一個窗口
                                        HCBT_CLICKSKIPPED        :系統(tǒng)已經從消息隊列中刪除了鼠標滾回消息,必須在安裝了 WH_JOURNALPLAYBACK 鉤子之后才會觸發(fā)該消息
                                        HCBT_CREATEWND            :一個窗口已經被創(chuàng)建,系統(tǒng)會在發(fā)送 WM_CREATE 或 WM_NCCREATE 消息之前調用鉤子程序.如果鉤子程序
                                                                 的返回值為非零,那么系統(tǒng)裝會銷毀這個窗口, CreateWindow 函數的返回值會為 NULL,但是 WM_DESTROY
                                                                 消息不會發(fā)送給窗口,如果鉤子程序的返回值為零,那么窗口會被正常創(chuàng)建,在 HCBT_CREATEWND 被通知
                                                                 的時候,這個窗口就已經被創(chuàng)建了,但是它的大小和位置被有被指定,以及它的父窗口也沒有被指定.
                                        HCBT_DESTROYWND            :一個窗口已經被銷毀
                                        HCBT_KEYSKIPPED            :系統(tǒng)已經從消息隊列中刪除了鍵盤滾回消息,必須在安裝了 WH_JOURNALPLAYBACK 鉤子之后才會觸發(fā)該消息
                                        HCBT_MINMAX                :一個窗口已經最小化或最大化了
                                        HCBT_MOVESIZE            :一個窗口已經移動了或改變了大小
                                        HCBT_QS                    :一個窗口已經從系統(tǒng)消息隊列中接受了  WM_QUEUESYNC  消息.
                                        HCBT_SETFOCUS            :一個窗口已經被激活
                                        HCBT_SYSCOMMAND            :一個窗口已經接受了系統(tǒng)命令

            WH_DEBUG                    :安裝一個鉤子,鉤住安裝鉤子的程序(差錯"鉤子"),更多信息如下:
                    LRESULT CALLBACK DebugProc(          
                        int nCode,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                        WPARAM wParam,                    //描述什么樣的鉤子被裝載了,參數值與 SetWindowsHookEx 函數的 idHook 參數值相同
                        LPARAM lParam                    //一個指向  DEBUGHOOKINFO 結構體的指什,具體信息如下:
                    );
                            typedef struct {
                                DWORD idThread;                                //filter 線程的ID
                                DWORD idThreadInstaller;                    //debugging filter 線程的ID
                                LPARAM lParam;                                //描述跳過此鉤子程序要傳遞給Debug程序的 lParam
                                WPARAM wParam;                                //描述跳過此鉤子程序要傳遞給Debug程序的 wParam
                                int code;                                    //描述跳過此鉤子程序要傳遵給Debug程序的 nCode
                            } DEBUGHOOKINFO, *PDEBUGHOOKINFO;

            WH_FOREGROUNDIDLE            :安裝一個鉤子,當一個程序的前端線程改變?yōu)榈蛢?yōu)先級時調用鉤子程序,這個鉤子在一個任務被降低優(yōu)先級前工作(前臺空閑窗口"鉤子"),更多信息如下:
                    DWORD CALLBACK ForegroundIdleProc(
                        int code,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                        DWORD wParam,       //這個參數沒有用
                        LONG lParam              //這個參數沒有用
                    );

            WH_GETMESSAGE                :安裝一個鉤子,監(jiān)視一個消息被寄送到了消息等待隊列中(接收消息投遞的"鉤子"),更多信息如下:
                    LRESULT CALLBACK GetMsgProc(          
                        int code,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                        WPARAM wParam,                    //描述這個消息是否被刪除了從消息隊列中 值為:    PM_NOREMOVE        :描述這個消息沒有從消息隊列中刪除(應用程序調用了 PeekMessage )        
                                                                                                        PM_REMOVE        :描述這個消息已經從消息隊列中刪除(應用程序調用了 GetMessage 或 PeekMessage)
                        LPARAM lParam                    //一個指向 MSG 結構體的指針,,具體信息如下:
                    );
                            typedef struct {
                                HWND hwnd;                //接受消息的窗體句柄
                                UINT message;            //描述消息,應用程序通常使用低位 WORD 值,操作系統(tǒng)通常使用高位 WORD 值
                                WPARAM wParam;            //消息的附加消息
                                LPARAM lParam;            //消息的附加消息
                                DWORD time;                //消息的發(fā)送時間
                                POINT pt;                //消息發(fā)送時的鼠標指針位置
                            } MSG, *PMSG;

            WH_JOURNALPLAYBACK            :安裝一個鉤子,滾回一個鼠標鍵盤的消息隊列,這個消息隊列是由 WH_JOURNALRECORD 鉤子創(chuàng)建的,更多信息如下:
                    LRESULT CALLBACK JournalPlaybackProc(
                        int code,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                          這個參數可能是以下值:          
       HC_GETNEXT        :鉤子程序拷貝了當前的鼠標或鍵盤消息,它是一個 EVENTMSG 結構體,由 lParam 來傳遞指針
       HC_NOREMOVE        :應用程序調用了 PeekMessage 函數,且調用 PeekMessage 函數之后,消息沒有從系統(tǒng)消息隊列中被移除
       HC_SKIP            :鉤子程序準備復制被 lParam 指向的 EVENTMSG 結構下的鼠標或鍵盤信息,一旦收到 HC_GETNEXT 鉤子程序復制
       HC_SYSMODALOFF    :一個消息框被銷毀,鉤子程序將繼續(xù)開始滾回消息
       HC_SYSMODALON    :一個消息框被顯示出來,鉤子程序將暫停滾回消息,直到這個消息框被銷毀,鉤子程序才繼續(xù)開始滾回消息
                        WPARAM wParam,                    //無用的參數
                        LPARAM lParam                    //只有當 nCode 參數的值為 HC_GETNEXT ,它才是一個指向 EVENTMSG 結構體的指針,否則是無用的參數
                    );
                     
            WH_JOURNALRECORD              :安裝一個鉤子,記錄一個鼠標鍵盤消息隊列,更多信息如下:
                    LRESULT CALLBACK JournalRecordProc(          
                        int code,//描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                  HC_SYSMODALOFF    :一個消息框被銷毀,鉤子程序將繼續(xù)開始滾回消息
                                  HC_SYSMODALON    :一個消息框被顯示出來,鉤子程序將暫停滾回消息,直到這個消息框被銷毀,鉤子程序才繼續(xù)開始滾回消息
                        WPARAM wParam,//這個參數是無效的
                        LPARAM lParam//一個指向 EVENTMSG 結構體的指針變量
                    );
                        typedef struct {
                            UINT message; //描述消息
                            UINT paramL;  //消息的擴展信息
                            UINT paramH;  //消息的擴展信息
                            DWORD time;  //寄送消息的時間
                            HWND hwnd;  //接受消息的窗口句柄
                        } EVENTMSG, *PEVENTMSG;
            
            WH_KEYBOARD                    :安裝一個鉤子:監(jiān)視鍵盤的消息,更多信息如下:
                    LRESULT CALLBACK KeyboardProc(
                        int code,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                          這個參數可能是以下值:           
                           HC_ACTION        :wParam 和 lParam 包涵了完整的消息
                           HC_NOREMOVE        :wParam 和 lParam 包涵了完整的消息,且這個鍵盤消息沒有從系統(tǒng)消息隊列中刪除
                        WPARAM wParam,                    //描述鍵盤消息的虛擬鍵信息
                        LPARAM lParam                    //描述鍵盤消息的掃描碼信息
                    );

            WH_KEYBOARD_LL                :安裝一個鉤子:監(jiān)視鍵盤的低級消息(Windows NT/2000/XP),更多信息如下:
                    LRESULT CALLBACK LowLevelKeyboardProc(
                        int nCode,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                         HC_ACTION        :wParam 和 lParam 包涵了完整的消息
                        WPARAM wParam,               //描述了鍵盤的消息值:WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, 或 WM_SYSKEYUP.
                        LPARAM lParam                    //一個指向 KBDLLHOOKSTRUCT 結構體的指針變量,更多信息如下:
                    );
                            typedef struct { 
                                DWORD vkCode;                  //鍵盤消息的虛擬鍵信息,值的范圍從1至254
                                DWORD scanCode;               //鍵盤的掃描碼信息
                                DWORD flags;                        //鍵盤的擴展信息
                                DWORD time;                        //消息的產生時間,可以用    GetMessageTime 函數取得
                                ULONG_PTR dwExtraInfo;    //消息的擴展信息
                            } KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;

            WH_MOUSE                    :安裝一個鉤子:監(jiān)視鍵盤的消息,更多信息如下:
                    LRESULT CALLBACK MouseProc(
                        int nCode,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                          這個參數可能是以下值:        
                                            HC_ACTION        :wParam 和 lParam 包涵了完整的消息
                                            HC_NOREMOVE        :wParam 和 lParam 包涵了完整的消息,且這個鼠標消息沒有從系統(tǒng)消息隊列中刪除
                        WPARAM wParam,                    //描述了鼠標的消息值
                        LPARAM lParam                    //一個指向 MOUSEHOOKSTRUCT 結構體的指針變量,更多信息如下:
                    );
                            typedef struct {
                                POINT pt;                //發(fā)送鼠標消息時候的鼠標坐標
                                HWND hwnd;                //接收鼠標消息的窗口句柄
                                UINT wHitTestCode;        //測試碼
                                ULONG_PTR dwExtraInfo;    //鼠標消息的擴展信息
                            } MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;

            WH_MOUSE_LL                    :安裝一個鉤子:監(jiān)視鼠標的低級消息(Windows NT/2000/XP),更多信息如下:
                    LRESULT CALLBACK LowLevelMouseProc(
                        int nCode,                         //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                        這個參數可能是以下值:            HC_ACTION        :wParam 和 lParam 包涵了完整的消息
                        WPARAM wParam,                 //描術了鼠標的消息值: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, 或 WM_RBUTTONUP.
                        LPARAM lParam                      //一個指向 MSLLHOOKSTRUCT 的指針變量,具體信息如下:
                    );
                            typedef struct {
                                POINT pt;                         //發(fā)送鼠標消息時候的鼠標坐標
                                DWORD mouseData;        //如果這個消息是 WM_MOUSEWHEEL 則高位為滾輪的滾動數目,低位保留.如果這個消息是  WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK,
                                                          WM_NCXBUTTONDOWN, WM_NCXBUTTONUP, 或 WM_NCXBUTTONDBLCLK.則高位描述的是X按鈕是按下還是釋放,低位保留
                                DWORD flags;                         //描述消息的注入事件
                                DWORD time;                         //描述寄送消息的時候
                                ULONG_PTR dwExtraInfo;    //描述消息的擴展信息
                            } MSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;

            WH_MSGFILTER                :安裝一個鉤子:監(jiān)視一些如同輸入框,消息框,菜單,滾動條的事件(對話框、消息框、菜單或滾動條輸入消息"鉤子"),更多信息如下:
                    LRESULT CALLBACK MessageProc(
                        int code,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                        這個參數可能是以下值:            MSGF_DDEMGR        :輸入框
                                                                                        MSGF_DIALOGBOX    :消息框
                                                                                        MSGF_MENU        :菜單
                                                                                        MSGF_SCROLLBAR    :滾動條
                        WPARAM wParam,                    //保留值
                        LPARAM lParam                        //一個指向 MSG 的指針變量,更多信息參見上面;
                    );

            WH_SHELL                    :安裝一個鉤子:監(jiān)視對程序的 Shell 操作(外殼"鉤子"),更多信息如下:
                    LRESULT CALLBACK ShellProc(  
                        int nCode,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                        這個參數可能是以下值:            
                                                        HSHELL_ACCESSIBILITYSTATE            :程序的訪問權被改變 (Windows 2000/XP)
                                                        HSHELL_ACTIVATESHELLWINDOW            :Shell 操作將激活程序的主窗口
                                                        HSHELL_APPCOMMAND                    :用戶完成了輸入一個指令(例如按下了一個關鍵的按鈕或鍵)而且應用程序沒有處理被產生的
                                                                                                             WM_APPCOMMAND 消息.WM_APPCOMMAND值參見下面
                                                                                                                    wParam:按下或放開按鈕
                                                                                                                    lParam:
                                                           APPCOMMAND_BASS_BOOST        :低音開關
                                                           APPCOMMAND_BASS_DOWN        :減少低音
                                                           APPCOMMAND_BASS_UP               :增加低音
                                                           APPCOMMAND_BROWSER_BACKWARD    :瀏覽器-向前
                                                           APPCOMMAND_BROWSER_FAVORITES:瀏覽器-收藏夾
                                                           APPCOMMAND_BROWSER_FORWARD    :瀏覽器-向后
                                                           APPCOMMAND_BROWSER_HOME        :瀏覽器-主頁
                                                           APPCOMMAND_BROWSER_REFRESH    :瀏覽器-刷新
                                                           APPCOMMAND_BROWSER_SEARCH    :瀏覽器-搜索
                                                           APPCOMMAND_BROWSER_STOP        :瀏覽器-停止下載
                                                           APPCOMMAND_CLOSE            :關閉窗口(不是程序)
                                                           APPCOMMAND_COPY                :復制已選擇
                                                           APPCOMMAND_CORRECTION_LIST    :當一個不正確的字符輸入時,退出
                                                           APPCOMMAND_CUT                :剪切已選擇
                                      APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE   :輸入和控制狀態(tài)的互相改變
                                                           APPCOMMAND_FIND                :打開查找對話框
                                                           APPCOMMAND_FORWARD_MAIL        :向前瀏覽郵件
                                                           APPCOMMAND_HELP                :打開幫助對話框
                                                           APPCOMMAND_LAUNCH_APP1        :打開應用程序1
                                                           APPCOMMAND_LAUNCH_APP2        :打開應用程序2
                                                           APPCOMMAND_LAUNCH_MAIL        :打開郵件
                                                           APPCOMMAND_MEDIA_CHANNEL_DOWN  :向下翻多媒體的頻道(Windows XP SP1)
                                                           APPCOMMAND_MEDIA_CHANNEL_UP    :向上翻多媒體的頻道(Windows XP SP1)
                                                           APPCOMMAND_MEDIA_FASTFORWARD:回滾多媒體           (Windows XP SP1)
                                                           APPCOMMAND_MEDIA_NEXTTRACK    :多媒體播放下一個文件
                                                           APPCOMMAND_MEDIA_PAUSE        :多媒體暫停
                                                           APPCOMMAND_MEDIA_PLAY        :多媒體播放
                                                           APPCOMMAND_MEDIA_PLAY_PAUSE    :多媒體暫停/播放
                                                           APPCOMMAND_MEDIA_RECORD        :多媒體開始記錄
                                                           APPCOMMAND_MEDIA_REWIND        :回滾(???)
                                                           APPCOMMAND_MEDIA_SELECT        :進入多媒體選擇狀態(tài)
                                                           APPCOMMAND_MEDIA_STOP        :多媒體停止
                                                           APPCOMMAND_MIC_ON_OFF_TOGGLE:開關麥克風
                                                           APPCOMMAND_MICROPHONE_VOLUME_DOWN 麥克風音量減小
                                                           APPCOMMAND_MICROPHONE_VOLUME_MUTE  :關閉麥克風
                                                           APPCOMMAND_MICROPHONE_VOLUME_UP :麥克風音量加大
                                                           APPCOMMAND_NEW                :創(chuàng)建一個新窗口
                                                           APPCOMMAND_OPEN                :打開一個窗口
                                                           APPCOMMAND_PASTE            :粘貼
                                                           APPCOMMAND_PRINT            :打印
                                                           APPCOMMAND_REDO                :重復最后的動作
                                                           APPCOMMAND_REPLY_TO_MAIL    :回復一個郵件信息
                                                           APPCOMMAND_SAVE                :保存當前的文檔
                                                           APPCOMMAND_SEND_MAIL        :發(fā)送一個郵件
                                                           APPCOMMAND_SPELL_CHECK        :開始Spell檢查
                                                           APPCOMMAND_TREBLE_DOWN        :減小高音
                                                           APPCOMMAND_TREBLE_UP        :增大高音
                                                           APPCOMMAND_UNDO                :恢復最后的操作
                                                           APPCOMMAND_VOLUME_DOWN        :增大音量
                                                           APPCOMMAND_VOLUME_MUTE        :關閉音
                                                           APPCOMMAND_VOLUME_UP        :減小音量
                                                           FAPPCOMMAND_KEY                :用戶按下了一個鍵
                                                           FAPPCOMMAND_MOUSE            :用戶按下了一個鼠標按鈕
                                                           FAPPCOMMAND_OEM                :未經確認的事件,可能是鼠標事件或是鍵盤事件
                                                           MK_CONTROL                    :Ctrl鍵按下了
                                                           MK_LBUTTON                    :鼠標左鍵按下了
                                                           MK_MBUTTON                    :鼠標中鍵按下了
                                                           MK_RBUTTON                    :鼠標右鍵按下了
                                                           MK_SHIFT                    :Shift鍵按下了
                                                           MK_XBUTTON1                    :第一個X按鈕按下了
                                                           MK_XBUTTON2                    :第二個X按鈕按下了
                                                                        HSHELL_GETMINRECT        :一個窗口取大化或最小化時系統(tǒng)需要它最小化后的窗口矩形
                                                                        HSHELL_LANGUAGE            :鍵盤語言改變
                                                                        HSHELL_REDRAW            :任務欄上的該窗口項重畫
                                                                        HSHELL_TASKMAN            :用戶選擇了任務欄中的一項
                                                                        HSHELL_WINDOWACTIVATED    :最前端的窗口改變了Z順序
                                                                        HSHELL_WINDOWCREATED    :一個最前端的窗口被創(chuàng)建,在調用鉤子函數的時候,該窗口已經被創(chuàng)建
                                                                        HSHELL_WINDOWDESTROYED    :一個最前端的窗口被銷毀,在調用鉤子函數的時候,該窗口已經被銷毀
                                                                        HSHELL_WINDOWREPLACED    :一個最前端的窗口被改變位置,在調用鉤子函數的時候,該窗口已經被改變位置
                        WPARAM wParam,                    //該參數的值隨 nCode 參數的值改變而賦有不同的意義
                                                                    nCode                        |值
                                                                    HSHELL_ACCESSIBILITYSTATE    |ACCESS_FILTERKEYS, ACCESS_MOUSEKEYS,或 ACCESS_STICKYKEYS.
                                                                    HSHELL_APPCOMMAND            |在上面已列出來了
                                                                    HSHELL_GETMINRECT            |窗口句柄
                                                                    HSHELL_LANGUAGE                |窗口句柄
                                                                    HSHELL_REDRAW                |窗口句柄
                                                                    HSHELL_WINDOWACTIVATED        |窗口句柄
                                                                    HSHELL_WINDOWCREATED        |窗口句柄
                                                                    HSHELL_WINDOWDESTROYED        |窗口句柄
                                                                    HSHELL_WINDOWREPLACED        |窗口句柄
                        LPARAM lParam                    //該參數的值隨 nCode 參數的值改變而賦有不同的意義
                                                                    nCode                        |值
                                                                    HSHELL_APPCOMMAND            |
                                                                    HSHELL_GETMINRECT            |一個指向 RECT 的結構體變量
                                                                    HSHELL_LANGUAGE                |鍵盤語言的句柄
                                                                    HSHELL_REDRAW                |TRUE:重畫,FALSE:別的方式
                                                                    HSHELL_WINDOWACTIVATED        |TRUE:全屏,FALSE:別的方式
                                                                    HSHELL_WINDOWREPLACED        |新的窗口句柄
                    );                                    //返回值:如果正常調用,返回值為:0 如果 nCode 值為 HSHELL_APPCOMMAND 且Shell值
                                                            為 WM_COMMAND 則返回值為非零

            WH_SYSMSGFILTER                    :安裝一個鉤子:監(jiān)視一些如同輸入框,消息框,菜單,滾動條的系統(tǒng)事件(系統(tǒng)消息"鉤子"),更多信息如下:
                    LRESULT CALLBACK SysMsgProc(
                        int code,                        //描述鉤子程序是否一定要處理這個消息 如果 nCode == HC_ACTION,那么鉤子程序一定要處理這個消息,如果 nCode 的值小于零,則一定要跳過這個消息
                                                        這個參數可能是以下值:            MSGF_DDEMGR        :輸入框
                                                                                        MSGF_DIALOGBOX    :消息框
                                                                                        MSGF_MENU        :菜單
                                                                                        MSGF_SCROLLBAR    :滾動條
                        WPARAM wParam,                    //保留值
                        LPARAM lParam                    //一個指向 MSG 的指針變量,更多信息參見上面;
                    );
*/

LRESULT CallNextHookEx(                                    //調用下一個Hook
    HHOOK hhk,                                            //Hook句柄
    int nCode,                                            //照Hook函數的 nCode 函數輸入,具體見上
    WPARAM wParam,                                        //照Hook函數的 wParam 函數輸入,具體見上
    LPARAM lParam                                        //照Hook函數的 lParam 函數輸入,具體見上
);                                                        //

BOOL UnhookWindowsHookEx(                                //卸載掉鉤子
    HHOOK hhk                                            //Hook句柄
);


//////////////////////////////////////////////////////////////////////////////////
鉤子類型
         每一種類型的Hook可以使應用程序能夠監(jiān)視不同類型的系統(tǒng)消息處理機制。下面描述所有可以利用的Hook類型。
1、WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks
WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks使你可以監(jiān)視發(fā)送到窗口過程的消息。系統(tǒng)在消息發(fā)送到接收窗口過程之前調用WH_CALLWNDPROC Hook子程,并且在窗口過程處理完消息之后調用WH_CALLWNDPROCRET Hook子程。
WH_CALLWNDPROCRET Hook傳遞指針到CWPRETSTRUCT結構,再傳遞到Hook子程。
CWPRETSTRUCT結構包含了來自處理消息的窗口過程的返回值,同樣也包括了與這個消息關聯的消息參數。
2、WH_CBT Hook
在以下事件之前,系統(tǒng)都會調用WH_CBT Hook子程,這些事件包括:
1. 激活,建立,銷毀,最小化,最大化,移動,改變尺寸等窗口事件;
2. 完成系統(tǒng)指令;
3. 來自系統(tǒng)消息隊列中的移動鼠標,鍵盤事件;
4. 設置輸入焦點事件;
5. 同步系統(tǒng)消息隊列事件。
Hook子程的返回值確定系統(tǒng)是否允許或者防止這些操作中的一個。
3、WH_DEBUG Hook
在系統(tǒng)調用系統(tǒng)中與其他Hook關聯的Hook子程之前,系統(tǒng)會調用WH_DEBUG Hook子程。你可以使用這個Hook來決定是否允許系統(tǒng)調用與其他Hook關聯的Hook子程。
4、WH_FOREGROUNDIDLE Hook
當應用程序的前臺線程處于空閑狀態(tài)時,可以使用WH_FOREGROUNDIDLE Hook執(zhí)行低優(yōu)先級的任務。當應用程序的前臺線程大概要變成空閑狀態(tài)時,系統(tǒng)就會調用WH_FOREGROUNDIDLE Hook子程。
5、WH_GETMESSAGE Hook
應用程序使用WH_GETMESSAGE Hook來監(jiān)視從GetMessage or PeekMessage函數返回的消息。你可以使用WH_GETMESSAGE Hook去監(jiān)視鼠標和鍵盤輸入,以及其他發(fā)送到消息隊列中的消息。
6、WH_JOURNALPLAYBACK Hook
WH_JOURNALPLAYBACK Hook使應用程序可以插入消息到系統(tǒng)消息隊列。可以使用這個Hook回放通過使用WH_JOURNALRECORD Hook記錄下來的連續(xù)的鼠標和鍵盤事件。只要WH_JOURNALPLAYBACK Hook已經安裝,正常的鼠標和鍵盤事件就是無效的。
WH_JOURNALPLAYBACK Hook是全局Hook,它不能象線程特定Hook一樣使用。
WH_JOURNALPLAYBACK Hook返回超時值,這個值告訴系統(tǒng)在處理來自回放Hook當前消息之前需要等待多長時間(毫秒)。這就使Hook可以控制實時事件的回放。
WH_JOURNALPLAYBACK是system-wide local hooks,它??不??射到任何行程位址空駣??
7、WH_JOURNALRECORD Hook
WH_JOURNALRECORD Hook用來監(jiān)視和記錄輸入事件。典型的,可以使用這個Hook記錄連續(xù)的鼠標和鍵盤事件,然后通過使用WH_JOURNALPLAYBACK Hook來回放。
WH_JOURNALRECORD Hook是全局Hook,它不能象線程特定Hook一樣使用。
WH_JOURNALRECORD是system-wide local hooks,它??不??射到任何行程位址空駣??
8、WH_KEYBOARD Hook
在應用程序中,WH_KEYBOARD Hook用來監(jiān)視WM_KEYDOWN and WM_KEYUP消息,這些消息通過GetMessage or PeekMessage function返回。可以使用這個Hook來監(jiān)視輸入到消息隊列中的鍵盤消息。
9、WH_KEYBOARD_LL Hook
WH_KEYBOARD_LL Hook監(jiān)視輸入到線程消息隊列中的鍵盤消息。
10、WH_MOUSE Hook
WH_MOUSE Hook監(jiān)視從GetMessage 或者 PeekMessage 函數返回的鼠標消息。使用這個Hook監(jiān)視輸入到消息隊列中的鼠標消息。
11、WH_MOUSE_LL Hook
WH_MOUSE_LL Hook監(jiān)視輸入到線程消息隊列中的鼠標消息。
12、WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks
WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks使我們可以監(jiān)視菜單,滾動條,消息框,對話框消息并且發(fā)現用戶使用ALT+TAB or ALT+ESC 組合鍵切換窗口。WH_MSGFILTER Hook只能監(jiān)視傳遞到菜單,滾動條,消息框的消息,以及傳遞到通過安裝了Hook子程的應用程序建立的對話框的消息。WH_SYSMSGFILTER Hook監(jiān)視所有應用程序消息。
WH_MSGFILTER 和 WH_SYSMSGFILTER Hooks使我們可以在模式循環(huán)期間過濾消息,這等價于在主消息循環(huán)中過濾消息。
通過調用CallMsgFilter function可以直接的調用WH_MSGFILTER Hook。通過使用這個函數,應用程序能夠在模式循環(huán)期間使用相同的代碼去過濾消息,如同在主消息循環(huán)里一樣。
13、WH_SHELL Hook
外殼應用程序可以使用WH_SHELL Hook去接收重要的通知。當外殼應用程序是激活的并且當頂層窗口建立或者銷毀時,系統(tǒng)調用WH_SHELL Hook子程。
WH_SHELL 共有5鐘情?r:
1. 只要有個top-level、unowned 窗口被產生、起作用、或是被摧毀;
2. 當Taskbar需要重畫某個按鈕;
3. 當系統(tǒng)需要顯示關于Taskbar的一個程序的最小化形式;
4. 當目前的鍵盤布局狀態(tài)改變;
5. 當使用者按Ctrl+Esc去執(zhí)行Task Manager(或相同級別的程序)。
       按照慣例,外殼應用程序都不接收WH_SHELL消息。所以,在應用程序能夠接收WH_SHELL消息之前,應用程序必須調用SystemParametersInfo function注冊它自己。

posted on 2009-11-28 16:01 閱讀(1448) 評論(0)  編輯 收藏 引用

導航

統(tǒng)計

常用鏈接

留言簿

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本高清dvd不卡在线观看| 国产一区二区三区在线观看免费| 欧美激情精品久久久久| 久久精品成人一区二区三区| 久久久亚洲欧洲日产国码αv | 中文国产亚洲喷潮| 一区二区三区国产精华| 亚洲欧美中文字幕| 久久琪琪电影院| 免费一级欧美片在线播放| 91久久精品日日躁夜夜躁欧美| 亚洲人被黑人高潮完整版| 亚洲网站在线| 久久夜色精品亚洲噜噜国产mv| 欧美www在线| 国产模特精品视频久久久久| 依依成人综合视频| 亚洲自拍啪啪| 欧美激情第8页| 亚洲视频精选| 久久综合久久久| 国产精品久久国产愉拍| 激情久久久久| 亚洲天堂av在线免费| 欧美在线视频免费播放| 亚洲国产成人在线视频| 亚洲一线二线三线久久久| 久久久久国产精品午夜一区| 亚洲国产精品va在看黑人| 亚洲视频在线一区| 久久精品国产69国产精品亚洲| 欧美日本高清| 亚洲东热激情| 久久激情综合| 日韩网站在线| 欧美1区2区| 亚洲在线视频网站| 香蕉久久精品日日躁夜夜躁| 久久爱www久久做| 欧美视频精品在线| 最近中文字幕日韩精品| 欧美在线精品免播放器视频| 亚洲精品一区在线观看| 美女视频黄免费的久久| 国产亚洲毛片| 久久精品国内一区二区三区| 亚洲午夜在线| 国产精品成人播放| 一本大道av伊人久久综合| 久久久久久穴| 亚洲在线第一页| 国产精品美女久久| 艳女tv在线观看国产一区| 亚洲第一狼人社区| 麻豆精品国产91久久久久久| 国内精品99| 久久久亚洲高清| 欧美伊人久久久久久久久影院| 国产精品成人午夜| 性色av一区二区三区| 亚洲综合日韩中文字幕v在线| 国产精品v日韩精品v欧美精品网站| 在线一区亚洲| 亚洲视频国产视频| 国产欧亚日韩视频| 久久久精品免费视频| 欧美一级大片在线观看| 国产私拍一区| 美女尤物久久精品| 免费亚洲一区二区| 99re热精品| 宅男噜噜噜66国产日韩在线观看| 欧美性大战久久久久久久| 午夜一级久久| 久久精品一区二区三区不卡牛牛 | 欧美一区在线看| 久久精品国产99国产精品| 亚洲国产三级| 亚洲社区在线观看| 国产欧美在线看| 欧美va亚洲va日韩∨a综合色| 免费在线亚洲欧美| 欧美激情aⅴ一区二区三区| 一区二区av在线| 亚洲欧美日韩另类| 一区二区三区在线观看欧美| 91久久极品少妇xxxxⅹ软件| 国产精品av免费在线观看| 久久超碰97人人做人人爱| 久久久久久自在自线| 99在线精品观看| 欧美在线|欧美| 日韩亚洲欧美一区二区三区| 午夜一区在线| 亚洲精品日本| 欧美一区二区在线观看| 日韩视频在线你懂得| 性欧美video另类hd性玩具| 亚洲欧洲一级| 亚洲综合成人在线| 亚洲国内自拍| 午夜精品视频在线观看| 亚洲人人精品| 香蕉久久夜色精品国产| 一本大道av伊人久久综合| 久久精品国产96久久久香蕉| 亚洲免费观看高清完整版在线观看熊 | 欧美日本韩国一区二区三区| 久久精品国产一区二区三| 欧美精品尤物在线| 欧美电影打屁股sp| 国产精品一区在线播放| 亚洲精品三级| 亚洲国产一区二区在线| 亚洲欧美综合精品久久成人| 亚洲精品在线视频观看| 久久天天躁狠狠躁夜夜av| 亚洲欧美日韩另类精品一区二区三区| 免费高清在线视频一区·| 久久一区视频| 狠狠色丁香婷综合久久| 亚洲综合久久久久| 亚洲综合国产| 欧美午夜片欧美片在线观看| 亚洲激情另类| 91久久亚洲| 欧美成人免费va影院高清| 欧美3dxxxxhd| 亚洲电影免费观看高清完整版在线| 欧美专区一区二区三区| 久久精品日产第一区二区三区| 国产精品美女xx| 亚洲欧美国产日韩天堂区| 亚洲女同精品视频| 国产精品福利在线观看网址| 一本色道久久99精品综合| 亚洲一区bb| 国产精品网站视频| 亚洲欧美日韩国产成人精品影院| 亚洲资源在线观看| 国产精品入口福利| 性欧美办公室18xxxxhd| 久久综合久色欧美综合狠狠| 免费观看在线综合| 最近看过的日韩成人| 制服丝袜亚洲播放| 欧美日韩小视频| 在线亚洲欧美专区二区| 午夜精品视频在线观看一区二区| 国产欧美视频一区二区三区| 性色一区二区| 欧美成人精品在线观看| 亚洲剧情一区二区| 欧美性久久久| 欧美一区二区三区啪啪| 蜜桃精品一区二区三区| 亚洲理伦电影| 国产日韩欧美a| 欧美大成色www永久网站婷| 亚洲久久视频| 久久精品国产77777蜜臀| 在线免费观看日韩欧美| 欧美精品v日韩精品v韩国精品v| av成人免费在线| 久久精品国产清高在天天线| 亚洲精品久久久蜜桃| 国产精品爱久久久久久久| 欧美在线999| 亚洲另类在线视频| 久久久一区二区| 一本色道久久综合亚洲精品高清 | 久久精品五月婷婷| 亚洲第一精品影视| 欧美日韩理论| 欧美与黑人午夜性猛交久久久| 麻豆久久精品| 一区二区三区成人| 国产综合久久久久久鬼色| 欧美日韩国产成人在线观看 | 欧美视频在线观看免费| 久久久精品一区| 一区二区三区鲁丝不卡| 男人插女人欧美| 久久精品一本| 亚洲一区二区三区视频播放| 亚洲黄一区二区| 国内精品美女在线观看| 国产精品每日更新在线播放网址| 欧美大片一区二区| 久久噜噜亚洲综合| 欧美亚洲视频一区二区| 一区二区三区国产在线| 最新成人av网站| 欧美成人小视频| 久久国产精品电影| 午夜一区不卡| 亚洲免费中文字幕| 亚洲丝袜av一区| 日韩亚洲国产精品| 亚洲人成毛片在线播放|