【问题标题】:Simulate ALT+F4 key press in C++在 C++ 中模拟 ALT+F4 按键
【发布时间】:2014-04-08 11:11:31
【问题描述】:

我正在用 KINECT 制作一个 c++ 应用程序。我基本上想用它来发送 alt f4 来关闭当前的焦点窗口而不是我的应用程序,就像你通常在键盘上按下 alt f4 一样。提前致谢。

我已经在使用 VkKeyScanA 输入其他几个键,但我找不到 alr+f4 的键码

【问题讨论】:

    标签: c++ kinect sendkeys simulate


    【解决方案1】:

    有不止一种方法可以做到这一点。模拟击键是你应该做的最后一件事,因为你不能很好地控制进程的键盘状态,所以很难做到正确。

    第一个是GetForegroundWindow + SendMessage 发送WM_SYSCOMMAND, SC_CLOSE 命令。这是默认窗口过程处理时 Alt+F4 所做的。如果程序没有覆盖 WM_SYSCOMMAND 处理,则默认情况下会发送 WM_CLOSE。

    如果您创建自己的窗口,那么您应该避免尝试找到前景窗口。将带有 APPCOMMAND_CLOSE 命令的 WM_APPCOMMAND 发送到您自己的窗口。您对 DefWindowProc() 的调用将命令通过多个层转发到 shell。

    如果您正在考虑更强有力的方式,例如 WM_CLOSE,请查看 Raymond Chen 的 recent blog post

    【讨论】:

    • 非常感谢,我只是做了 SendMessage(GetForegroundWindow(), WM_CLOSE,NULL,NULL);它成功了,谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多