以下是一个简单的示例代码,可以使用 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();
Node.js C++ 鼠标中键按钮按下监听 - SetWindowsHookEx 示例

原文地址: https://www.cveoy.top/t/topic/olXy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录