c++ - C ++如何在Windows钩子中打破消息循环
问题描述
我需要打破 win32 键盘钩子中的消息循环。循环看起来像这样,
MSG msg;
while (GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
我使用了 unhook 方法,但它不起作用。我还有另一个问题,如果我将 while 循环参数更改为 !GetMessage ,它的工作方式与以前相同。如果我在那个while循环中添加printf,它不会打印任何东西。我只想为键盘钩子制作一个dll。dll中的方法需要结束。有了这个(消息循环)我不能结束(或返回)那个方法。
对不起,我的英语不好。
谢谢。
解决方案
使用 aPostQuitMessage(0)
打破程序。你可以把它放在你的窗口程序中,例如在WM_DESTROY
消息中进来。
推荐阅读
- python - UnboundLocalError:分配前引用的局部变量“嵌入”
- apache-kafka - Kafka Producer:发送消息后断开连接与保持连接打开
- vhdl - 函数内的 VHDL 计算
- javascript - (Javascript)给定间隔中的素数:for循环不迭代
- android - 如何为 xmpp 实现 smack
- cryptocurrency - Diem(前 Libra):创建帐户失败并显示“无法从验证器获取帐户,错误:航点值不匹配”
- python-3.x - 在 python 中不能安全地解释为整数
- c# - C#按列分组并与其他列形成分层数据
- python - 为什么使用 .items() 允许我遍历 defaultdict 否则变量被读取错误?
- python - 创建动态范围并计算平均值