HOOK鉤子機制學習筆記(3) - 鉤子常用結構體MSDN翻譯整理 收藏?
作者:MaybeHelios???? blog: http://blog.csdn.net/maybehelios/???
下面是應用Hook時會用到的各種結構。
結構1:CBT_CREATEWND Structure
??? The CBT_CREATEWND structure contains information passed to a WH_CBT hook procedure, CBTProc, before a window is created.
??? 該結構包含有:在一個窗口被創建之前傳遞給WH_CBT鉤子子程,即CBTProc,的信息。
typedef struct {
??? LPCREATESTRUCT lpcs;
??? HWND hwndInsertAfter;
} CBT_CREATEWND, *LPCBT_CREATEWND;
Members成員
lpcs
??? Pointer to a CREATESTRUCT structure that contains initialization parameters for the window about to be created.
??? 一個指向CREATESTRUCT結構的指針,該結構包含即將被創建的窗體的初始化參數。
hwndInsertAfter
??? Handle to the window whose position in the Z order precedes that of the window being created.
??? 窗體的句柄,該窗體的Z軸位置在正在被創建的窗體的Z軸位置之前。
結構2:CBTACTIVATESTRUCT Structure
??? The CBTACTIVATESTRUCT structure contains information passed to a WH_CBT hook procedure, CBTProc, before a window is activated.
??? CBTACTIVATESTRUCT 結構包含在窗體被激活之前,傳遞給WH_CBT鉤子子程CBTProc 的信息。
typedef struct {
??? BOOL fMouse;
??? HWND hWndActive;
} CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
Members 成員
fMouse
??? Specifies whether the window is being activated as a result of a mouse click. This value is TRUE if a mouse click is causing the activation or FALSE if it is not.
??? 指定窗體是否是由于鼠標的點擊而導致被激活.如果是因為鼠標的點擊而引發了窗體的激活,返回true,否則返回false。
hWndActive
??? Handle to the active window.
??? 活動窗口的句柄。
結構3:CWPRETSTRUCT Structure
??? The CWPRETSTRUCT structure defines the message parameters passed to a WH_CALLWNDPROCRET hook procedure, CallWndRetProc.
??? CWPRETSTRUCT結構定義了傳遞給WH_CALLWNDPROCRET鉤子子程CallWndRetProc的消息參數。
typedef struct {
??? LRESULT lResult;
??? LPARAM lParam;
??? WPARAM wParam;
??? UINT message;
??? HWND hwnd;
} CWPRETSTRUCT, *PCWPRETSTRUCT;
Members成員
lResult
??? Specifies the return value of the window procedure that processed the message specified by the message value.?
??? 指定了窗體程序的返回值,該窗體程序處理由 message 值指定的消息。
lParam / wParam
??? Specifies additional information about the message. The exact meaning depends on the message value.
??? 指定消息的附加信息。附加的意義取決于message的值。
message
??? Specifies the message.
??? 指定消息。
hwnd
??? Handle to the window that processed the message specified by the message value.
??? 處理由message的值指定的消息的窗體的窗體句柄。
結構4:CWPSTRUCT Structure
??? The CWPSTRUCT structure defines the message parameters passed to a WH_CALLWNDPROC hook procedure, CallWndProc.
??? CWPSTRUCT 結構定義了傳遞給WH_CALLWNDPROC鉤子子程CallWndProc的消息參數。
typedef struct {
??? LPARAM lParam;
??? WPARAM wParam;
??? UINT message;
??? HWND hwnd;
} CWPSTRUCT, *PCWPSTRUCT;
Members
lParam? / wParam
??? Specifies additional information about the message. The exact meaning depends on the message value.
??? 指定消息的附加信息。附加的意義取決于message的值。
message
??? Specifies the message.
??? 指定消息
hwnd
??? Handle to the window to receive the message.
??? 接收消息的窗體的句柄。
?
結構5:DEBUGHOOKINFO Structure
??? The DEBUGHOOKINFO structure contains debugging information passed to a WH_DEBUG hook procedure, DebugProc.
??? DEBUGHOOKINFO結構包含有傳遞給WH_DEBUG鉤子子程DebugProc的調試信息。
typedef struct {
??? DWORD idThread;
??? DWORD idThreadInstaller;
??? LPARAM lParam;
??? WPARAM wParam;
??? int code;
} DEBUGHOOKINFO, *PDEBUGHOOKINFO;
Members成員
idThread
??? Handle to the thread containing the filter function.
??? 包含過濾方法的線程的句柄。
idThreadInstaller
??? Handle to the thread that installed the debugging filter function.
??? 安裝調試過濾方法的線程的句柄。
lParam / wParam
??? Specifies the value to be passed to the hook in the lParam parameter of the DebugProc callback function.
??? 指定在DebugProc回調函數的lParam/ wParam 參數中,要傳遞給鉤子的值。
code
??? Specifies the value to be passed to the hook in the nCode parameter of the DebugProc callback function.
??? 指定在DebugProc回調函數的nCode 參數中,要傳遞給鉤子的值。
結構6:EVENTMSG Structure
??? The EVENTMSG structure contains information about a hardware message sent to the system message queue. This structure is used to store message information for the JournalPlaybackProc callback function.
??? 該結構包含有關于硬件的消息,該消息被發送給系統的消息隊列。該結構用來為JournalPlaybackProc回調函數存儲消息的信息。
typedef struct {
??? UINT message;
??? UINT paramL;
??? UINT paramH;
??? DWORD time;
??? HWND hwnd;
} EVENTMSG, *PEVENTMSG;
Members成員
message
??? Specifies the message.
??? 指定消息。
paramH / paramH
??? Specifies additional information about the message. The exact meaning depends on the message value.
??? 指定消息的附加信息。附加的意義取決于message的值。
time
??? Specifies the time at which the message was posted.
??? 消息被傳遞時的時間 。
hwnd
??? Handle to the window to which the message was posted.
??? 消息被傳給的窗口的句柄。
結構7:KBDLLHOOKSTRUCT Structure
??? The KBDLLHOOKSTRUCT structure contains information about a low-level keyboard input event.
??? 該結構包含有低層鍵盤輸入事件的信息。
typedef struct {
??? DWORD vkCode;
??? DWORD scanCode;
??? DWORD flags;
??? DWORD time;
??? ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
Members成員
vkCode
??? Specifies a virtual-key code. The code must be a value in the range 1 to 254.?
??? 指定虛擬鍵值。該值必須在1到254的范圍內。
scanCode
??? Specifies a hardware scan code for the key.
??? 指定鍵的硬件掃描碼。
flags
??? Specifies the extended-key flag, event-injected flag, context code, and transition-state flag. This member is specified as follows. An application can use the following values to test the keystroke flags.
??? 指定擴展鍵標志,事件注入標志,上下文代碼,轉換狀態碼。成員如下所示。應用程序可以使用下列值來檢查鍵盤敲擊標志。
??? Value值??????????????????????????? Purpose目的
??? LLKHF_EXTENDED???? Test the extended-key flag. 測試擴展鍵標志。
??? LLKHF_INJECTED?????? Test the event-injected flag. 測試事件注入標志。
??? LLKHF_ALTDOWN?????? Test the context code. 測試上下文代碼。
??? LLKHF_UP??????????????????? Test the transition-state flag. 測試轉換狀態碼。
?
??? 0 :Specifies whether the key is an extended key, such as a function key or a key on the numeric keypad. The value is 1 if the key is an extended key; otherwise, it is 0.
??? 指定該鍵是否是擴展鍵,例如:功能鍵、數字鍵盤上的鍵。是擴展鍵為1,否則為0。
??? 1-3 :Reserved. 保留。
??? 4? :Specifies whether the event was injected. The value is 1 if the event was injected; otherwise, it is 0.
??? 指定事件是否被注入。被注入為1,否則為0。
??? 5? :Specifies the context code. The value is 1 if the ALT key is pressed; otherwise, it is 0.
??? 指定上下文代碼。如果按下了ALT,該值為1,否則為0
??? 6? :Reserved. 保留。
??? 7? :Specifies the transition state. The value is 0 if the key is pressed and 1 if it is being released.
??? 指定轉換狀態。如果該鍵被按下該值為1,如果被釋放為0。
time
??? Specifies the time stamp for this message, equivalent to what GetMessageTime would return for this message.
??? 指定消息的時間戳,相當于GetMessageTime返回的值。
dwExtraInfo
??? Specifies extra information associated with the message.
??? 指定和該消息相關聯的擴展信息。
結構8 :MOUSEHOOKSTRUCT Structure
????? T he MOUSEHOOKSTRUCT structure contains information about a mouse event passed to a WH_MOUSE hook procedure, MouseProc.
???? MOUSEHOOKSTRUCT結構包含有傳遞給WH_MOUSE鉤子子程MouseProc的,關于鼠標事件的信息。
typedef struct {
??? POINT pt;
??? HWND hwnd;
??? UINT wHitTestCode;
??? ULONG_PTR dwExtraInfo;
} MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT;
Members成員
pt
??? Specifies a POINT structure that contains the x- and y-coordinates of the cursor, in screen coordinates.
??? 指定在屏幕坐標系下,包含有光標x、y坐標的POINT結構。
hwnd
??? Handle to the window that will receive the mouse message corresponding to the mouse event.
??? 希望對鼠標事件做出響應、接收鼠標消息的窗體的句柄。
wHitTestCode
??? Specifies the hit-test value. For a list of hit-test values, see the description of the WM_NCHITTEST message.
??? 指定點擊測試值。查看WM_NCHITTEST消息可以得到值的列表。
dwExtraInfo
??? Specifies extra information associated with the message.
??? 指定和該消息相關聯的附加信息。
結構9:MOUSEHOOKSTRUCTEX Structure
??? The MOUSEHOOKSTRUCTEX structure contains information about a mouse event passed to a WH_MOUSE hook procedure, MouseProc.
??? MOUSEHOOKSTRUCTEX結構包含有傳遞給WH_MOUSE鉤子子程MouseProc的關于鼠標事件的信息。
??? This is an extension of the MOUSEHOOKSTRUCT structure that includes information about wheel movement or the use of the X button.
??? 這是對MOUSEHOOKSTRUCT的擴展。包含有滾輪的活動和X鍵的使用。
typedef struct {
??? MOUSEHOOKSTRUCT MOUSEHOOKSTRUCT;
??? DWORD mouseData;
} MOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX;
Members成員
MOUSEHOOKSTRUCT
??? The members of a MOUSEHOOKSTRUCT structure make up the first part of this structure.
??? MOUSEHOOKSTRUCT結構的成員構成了該結構的前面部分。
mouseData
??? If the message is WM_MOUSEWHEEL, the HIWORD of this member is the wheel delta. The LOWORD is undefined and reserved. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120.
??? 如果消息是WM_MOUSEWHEEL,該成員的HIWORD就是wheel delta。LOWORD做為保留未定義。正值表示滾輪向前旋轉,即遠離用戶的方向;負值表示滾輪向后旋轉,即朝向用戶的方向。滾輪的點擊被定義為WHEEL_DELTA, 具體值為120。
??? If the message is WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK, WM_NCXBUTTONDOWN, WM_NCXBUTTONUP, or WM_NCXBUTTONDBLCLK, the HIWORD of mouseData specifies which X button was pressed or released, and the LOWORD is undefined and reserved. This member can be one or more of the following values. Otherwise, mouseData is not used.
??? 如果消息是WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK, WM_NCXBUTTONDOWN, WM_NCXBUTTONUP, 或者 WM_NCXBUTTONDBLCLK,? mouseData? 的HIWORD值指定哪個X鍵被按下或者釋放,LOWORD做為保留未定義。該成員可以是以下值中的一個或者多個。否則,mouseData未使用。
??? 1.XBUTTON1 :The first X button was pressed or released. 第一個X鍵被按下或者釋放。
??? 2.XBUTTON2 :The second X button was pressed or released.第二個X鍵被按下或者釋放。
結構9:MSLLHOOKSTRUCT Structure
??? The MSLLHOOKSTRUCT structure contains information about a low-level keyboard input event. (msdn錯誤)
??? 該MSLLHOOKSTRUCT結構包含有低層鍵盤輸入事件的信息。
typedef struct {
??? POINT pt;
??? DWORD mouseData;
??? DWORD flags;
??? DWORD time;
??? ULONG_PTR dwExtraInfo;
} MSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
Members成員
pt
??? Specifies a POINT structure that contains the x- and y-coordinates of the cursor, in screen coordinates.
??? 指定在屏幕坐標系下,包含有光標x、y坐標的POINT結構。
mouseData
??? If the message is WM_MOUSEWHEEL, the HIWORD of this member is the wheel delta. The LOWORD is undefined and reserved. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user. One wheel click is defined as WHEEL_DELTA, which is 120.
??? 如果消息是WM_MOUSEWHEEL,該成員的HIWORD就是wheel delta。LOWORD做為保留未定義。正值表示滾輪向前旋轉,即遠離用戶的方向;負值表示滾輪向后旋轉,即朝向用戶的方向。滾輪的點擊被定義為WHEEL_DELTA, 具體值為120。
??? If the message is WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK, WM_NCXBUTTONDOWN, WM_NCXBUTTONUP, or WM_NCXBUTTONDBLCLK, the HIWORD of mouseData specifies which X button was pressed or released, and the LOWORD is undefined and reserved. This member can be one or more of the following values. Otherwise, mouseData is not used.
??? 如果消息是WM_XBUTTONDOWN, WM_XBUTTONUP, WM_XBUTTONDBLCLK, WM_NCXBUTTONDOWN, WM_NCXBUTTONUP, 或者 WM_NCXBUTTONDBLCLK,? mouseData? 的HIWORD值指定哪個X鍵被按下或者釋放,LOWORD做為保留未定義。該成員可以是以下值中的一個或者多個。否則,mouseData未使用。
??? 1.XBUTTON1:The first X button was pressed or released. 第一個X鍵被按下或者釋放。
??? 2.XBUTTON2 :The second X button was pressed or released.第二個X鍵被按下或者釋放。
flags
??? Specifies the event-injected flag. An application can use the following value to test the mouse flags.????
??? 指定事件注入標志。應用程序可以使用下列值來測試鼠標標志。
??? Value??????????????????????????? Purpose
??? LLMHF_INJECTED?? Test the event-injected flag.測試事件注入標志。
??? 0
??? Specifies whether the event was injected. The value is 1 if the event was injected; otherwise, it is 0.???? 事件是否被注入。如果被注入,為 1,否則為0
??? 1-15 :Reserved.保留
time
??? Specifies the time stamp for this message.
??? 消息的時間戳。
dwExtraInfo
??? Specifies extra information associated with the message.
??? 消息的擴展信息。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/jiangxinyu/archive/2010/02/03/5284094.aspx