低级鼠标钩 - 断点上的鼠标冻结

 fst123 发布于 2023-01-20 14:35

我想自己绘制和移动窗户(使用铬嵌入式框架).要做到这一点,我需要一个全局回调鼠标移动,在我的窗口外 - 所以我安装了一个低级鼠标钩:

hMouseLLHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)mouseHookProc, hInstance, NULL);

钩子简单地抓取鼠标事件并调用"CallNextHookEx".这里没有问题,一切都按照要求行事.我现在的问题是:如果调试器中断或抛出异常,我就不能再移动鼠标..

我尝试在另一个线程中处理钩子,如下所示:

HANDLE mouseProcHandle = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)mouseProcessor, NULL, NULL, &dwMouseProcThread);

DWORD WINAPI Win32Application::mouseProcessor(LPVOID lpParm) {
    hMouseLLHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)mouseHookProc, ((Win32Application*)Application::getInstance())->hInstance, NULL);

    MSG message;
    while (GetMessage(&message, NULL, 0, 0)) {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }

    UnhookWindowsHookEx(hMouseLLHook);
    return 0;
}

但这也无法解决问题.是否有解决方法,解决方案或其他方法来执行此操作?另外,我认为可能没有必要使用低级别的钩子,因为我只需要了解它的运行情况,如果我是最后一个,那就不会有问题,所以系统/其他进程可以处理首先是鼠标回调.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有