hook钩子技术发送鼠标消息postmessage点击坐标C语言具体代码
下面是一个使用钩子技术发送鼠标消息的C语言代码示例:
#include <windows.h>
// 钩子函数,用于处理鼠标消息
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0 && wParam == WM_LBUTTONDOWN) {
// 发送鼠标左键点击消息给指定坐标点
HWND hWnd = GetForegroundWindow(); // 获取当前活动窗口句柄
POINT pt;
pt.x = 100; // 指定点击的横坐标
pt.y = 100; // 指定点击的纵坐标
PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
PostMessage(hWnd, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main()
{
// 安装钩子
HHOOK hHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, NULL, 0);
if (hHook == NULL) {
printf("Failed to install mouse hook.\n");
return 1;
}
// 启动消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 卸载钩子
UnhookWindowsHookEx(hHook);
return 0;
}
这段代码使用SetWindowsHookEx函数安装了一个低级别鼠标钩子,当鼠标左键按下时,钩子函数MouseHookProc会被调用。在钩子函数中,我们获取当前活动窗口句柄,并使用PostMessage函数向该窗口发送鼠标左键点击消息(WM_LBUTTONDOWN和WM_LBUTTONUP),指定点击的坐标为(100, 100)。最后,通过消息循环处理消息,直到接收到退出消息为止。在退出之前,我们使用UnhookWindowsHookEx函数卸载钩子。
请注意,钩子函数需要在一个Windows消息循环中运行,所以我们在main函数中使用了一个简单的消息循环。如果你的程序已经有一个消息循环,你可以将钩子安装和卸载的代码集成到你的消息循环中
原文地址: https://www.cveoy.top/t/topic/iwXy 著作权归作者所有。请勿转载和采集!