首页 > 解决方案 > C ++如何在Windows钩子中打破消息循环

问题描述

我需要打破 win32 键盘钩子中的消息循环。循环看起来像这样,

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

我使用了 unhook 方法,但它不起作用。我还有另一个问题,如果我将 while 循环参数更改为 !GetMessage ,它的工作方式与以前相同。如果我在那个while循环中添加printf,它不会打印任何东西。我只想为键盘钩子制作一个dll。dll中的方法需要结束。有了这个(消息循环)我不能结束(或返回)那个方法。

对不起,我的英语不好。

谢谢。

标签: c++winapi

解决方案


使用 aPostQuitMessage(0)打破程序。你可以把它放在你的窗口程序中,例如在WM_DESTROY消息中进来。


推荐阅读