- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我手上有一些代码可以全局打印鼠标坐标(使用 WH_MOUSE_LL)。我的目标是使用 WH_MOUSE 而不是 WH_MOUSE_LL 因为(根据我的阅读)它更快。我在论坛上读到,当使用 WH_MOUSE 时,需要在 DLL 中声明它以实现全局效果,但是,当在程序中使用时,它应该在声明它的那个应用程序上工作,但它不起作用(它什么都不打印)当我将 WH_MOUSE_LL 更改为 WH_MOUSE 时。这是代码:
#define _WIN32_WINNT 0x0400
#pragma comment( lib, "user32.lib" )
#include <windows.h>
#include <stdio.h>
HHOOK hMouseHook;
LRESULT CALLBACK mouseProc (int nCode, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCT * pMouseStruct = (MOUSEHOOKSTRUCT *)lParam;
if (pMouseStruct != NULL){
if(wParam == WM_LBUTTONDOWN)
{
printf( "clicked" );
}
printf("Mouse position X = %d Mouse Position Y = %d\n", pMouseStruct->pt.x,pMouseStruct->pt.y);
}
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
}
DWORD WINAPI MyMouseLogger(LPVOID lpParm)
{
HINSTANCE hInstance = GetModuleHandle(NULL);
// here I put WH_MOUSE instead of WH_MOUSE_LL
hMouseHook = SetWindowsHookEx( WH_MOUSE_LL, mouseProc, hInstance, NULL );
MSG message;
while (GetMessage(&message,NULL,0,0)) {
TranslateMessage( &message );
DispatchMessage( &message );
}
UnhookWindowsHookEx(hMouseHook);
return 0;
}
int main(int argc, char** argv)
{
HANDLE hThread;
DWORD dwThread;
hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)MyMouseLogger, (LPVOID) argv[0], NULL, &dwThread);
if (hThread)
return WaitForSingleObject(hThread,INFINITE);
else
return 1;
}
最佳答案
// here I put WH_MOUSE instead of WH_MOUSE_LL
hMouseHook = SetWindowsHookEx( WH_MOUSE_LL, mouseProc, hInstance, NULL );
第四个参数也必须更改为 GetCurrentThreadId() 以使其成为本地的。
关于c++ - 为 WH_MOUSE 设置 WindowsHookEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180773/
我需要一个用 VB.NET 编写的代码示例,以使用 user32.dll 和 的低级 Hook 捕获表单外的鼠标滚轮滚动事件 WM_MOUSEWHEEL 就像 Hans Passant 在我的其他问题
我手上有一些代码可以全局打印鼠标坐标(使用 WH_MOUSE_LL)。我的目标是使用 WH_MOUSE 而不是 WH_MOUSE_LL 因为(根据我的阅读)它更快。我在论坛上读到,当使用 WH_MOU
Windows Hook 允许您深入了解其他进程,有时还可以改变它们的行为。 Mac OS X 有这样的东西吗? 谢谢! 最佳答案 SetWindowsHookEx 更像是旧的 InputManage
我正在尝试创建一个 Electron node.js 应用程序,它可以使用全局键绑定(bind)执行某些功能。不幸的是,Electron 中的全局键绑定(bind) API 在游戏中不起作用,因此我需
我是一名优秀的程序员,十分优秀!