【问题标题】:C++ Keyboard Hook - Exit program but also prevent key from being processed elsewhereC++ 键盘挂钩 - 退出程序,但也防止在其他地方处理键
【发布时间】:2014-01-09 01:00:28
【问题描述】:

我正在编写一个钩子,它必须在按下设置键时退出程序,并且不允许在其他地方处理该输入。通常你会在钩子函数中返回一个非零输入,这样输入就不会在其他地方使用,但是由于我使用的是 exit(0) 我无法阻止键盘输入干扰可能在程序后面的其他应用程序.有人对我如何阻止输入有任何想法吗?

【问题讨论】:

  • 从未尝试过,但是如何将调用exit() 作为APC 传递给调用线程的钩子函数?如果调用线程在处理完所有钩子回调后进入警报等待状态,则应调用exit

标签: c++ windows


【解决方案1】:

在你的钩子函数中正常处理钩子(带有'consumed'标志)。 您唯一需要做的就是不要调用同步函数exit(0),而是调用PostQuitMessage(0)

PostQuitMessage(0)发布 WM_QUIT 消息,该消息将在处理键盘事件之后处理。

【讨论】:

  • 是的,这是一个很好的答案。我找到了 DestroyWindow(0) 并开始使用它,但这是解决我的问题的更好方法。感谢您的意见,非常感谢。
【解决方案2】:

我通过调用 DestroyWindow(hWnd) 而不是使用 exit 然后使用 return 1 来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多