文章目录[隐藏]
今天介绍一下易语言SetWindowsHookExA(WH_CALLWNDPROC,,,,) 消息钩子用到的回调函数,及结构体,
安装钩子
messagehook = SetWindowsHookExA (4, &回调函数, 0, threadID)
threadID当前应用窗口的线程ID
回调函数
.版本 2 .子程序 回调函数, 整数型 .参数 nCode, 整数型, , 指定钩子子程是否必须处理消息。 .参数 wParam, 整数型, , 指定消息是否由当前线程发送。如果消息是由当前线程发送的,则非零;否则,它就是零。 .参数 lParam, 整数型, , 指向包含消息详细信息的CWPSTRUCT结构的指针。
.参数 nCode
指定钩子子程是否必须处理消息。如果nCode是HC_ACTION,钩子子程必须处理消息。如果nCode小于零,钩子子程必须将消息传递给CallNextHookEx函数,而无需进一步处理,并且必须返回CallNextHookEx返回的值。
CallWndProc callback function (Windows)
与SetWindowsHookEx函数一起使用的应用程序定义的或库定义的回调函数。系统在调用窗口过程处理发送给线程的消息之前调用此函数。
HOOKPROC类型定义了指向这个回调函数的指针。CallWndProc是应用程序定义或库定义函数名的占位符。
C++ LRESULT CALLBACK CallWndProc( _In_ int nCode, _In_ WPARAM wParam, _In_ LPARAM lParam );
https://msdn.microsoft.com/en-us/library/ms644975(v=VS.85).aspx
消息结构体CWPSTRUCT
.版本 2 .数据类型 CWPSTRUCT .成员 lParam, 整数型, , , 关于消息的附加信息。确切的含义取决于消息值。 .成员 wParam, 整数型, , , 关于消息的附加信息。确切的含义取决于消息值。 .成员 message, 整数型, , , 消息 .成员 hwnd, 整数型, , , 接收消息的窗口的句柄。
tagCWPSTRUCT | Microsoft Docs
typedef struct tagCWPSTRUCT { LPARAM lParam; WPARAM wParam; UINT message; HWND hwnd; } CWPSTRUCT, *PCWPSTRUCT, *NPCWPSTRUCT, *LPCWPSTRUCT;
wParam窗口最小化最大化关闭还原
拦截 WM_SYSCOMMAND = 274
判断wParam
SC_MINIMIZE=61472最小化
SC_CLOSE=61536关闭
SC_RESTORE=61728还原
SC_MAXIMIZE=61488最大化
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/ns-winuser-tagcwpstruct