求获得指定窗口的鼠标指针移动的像素点
想要获得一个窗口的鼠标指针移动的像素点
6条回答 默认 最新
- weixin_44616020 2023-03-02 07:05关注
您可以使用Windows API函数来获取指定窗口的鼠标指针移动的像素点。以下是使用C++的示例代码:
首先,您需要获取指定窗口的句柄:
HWND hWnd = FindWindow(NULL, "窗口标题");
接下来,您需要注册一个Raw Input设备:
RAWINPUTDEVICE Rid[1]; Rid[0].usUsagePage = 0x01; // Generic desktop controls Rid[0].usUsage = 0x02; // Mouse Rid[0].dwFlags = RIDEV_INPUTSINK; Rid[0].hwndTarget = hWnd; if (RegisterRawInputDevices(Rid, 1, sizeof(Rid[0])) == FALSE) { // 注册失败处理 }
最后,您需要处理WM_INPUT消息并获取鼠标移动的像素点:
case WM_INPUT: { UINT dwSize = 0; GetRawInputData((HRAWINPUT)lParam, RID_INPUT, NULL, &dwSize, sizeof(RAWINPUTHEADER)); LPBYTE lpb = new BYTE[dwSize]; if (lpb == NULL) { return 0; } if (GetRawInputData((HRAWINPUT)lParam, RID_INPUT, lpb, &dwSize, sizeof(RAWINPUTHEADER)) != dwSize) { // 错误处理 } RAWINPUT* raw = (RAWINPUT*)lpb; if (raw->header.dwType == RIM_TYPEMOUSE) { // 获取鼠标移动的像素点 int x = raw->data.mouse.lLastX; int y = raw->data.mouse.lLastY; // 处理鼠标移动的像素点 } delete[] lpb; break; }
如果要获取非当前窗口的鼠标指针移动的像素点,您需要使用SetWindowsHookEx函数来安装一个鼠标钩子。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用