Node.js C++ 鼠标中键按钮按下监听 - SetWindowsHookEx 示例
以下是一个简单的示例代码,可以使用 node-gyp 将其编译成 Node.js 模块:
#include <node.h>
#include <Windows.h>
HHOOK hHook = NULL;
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode == HC_ACTION && wParam == WM_MBUTTONDOWN)
{
// 鼠标中键按钮按下事件
// 在此处可以添加自己的逻辑代码
printf('Middle mouse button pressed.\n');
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
void SetMouseHook(const v8::FunctionCallbackInfo<v8::Value>& args)
{
HWND hWnd = GetDesktopWindow();
HINSTANCE hInstance = GetModuleHandle(NULL);
hHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, hInstance, 0);
if (hHook == NULL)
{
return;
}
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
void UnsetMouseHook(const v8::FunctionCallbackInfo<v8::Value>& args)
{
if (hHook != NULL)
{
UnhookWindowsHookEx(hHook);
hHook = NULL;
}
}
void Init(v8::Local<v8::Object> exports)
{
NODE_SET_METHOD(exports, 'setMouseHook', SetMouseHook);
NODE_SET_METHOD(exports, 'unsetMouseHook', UnsetMouseHook);
}
NODE_MODULE(addon, Init)
可以使用以下方式在 Node.js 中调用:
const addon = require('./build/Release/addon');
addon.setMouseHook();
// ...
addon.unsetMouseHook();
原文地址: https://www.cveoy.top/t/topic/olXy 著作权归作者所有。请勿转载和采集!