【问题标题】:Emulating alt-tab keys causes the menu to get stuck on screen模拟 alt-tab 键会导致菜单卡在屏幕上
【发布时间】:2013-12-28 22:52:53
【问题描述】:

我需要为 alt-tab 功能制作一个自定义热键。我通过发送相应的密钥对SendInput 执行此操作,并且效果很好。

但是,如果一个热键已经包含了alt键,程序只需要按下并释放tab即可;但这样做会导致 alt-tab 菜单甚至卡在屏幕上,唯一让它消失的方法是关闭我的程序。这怎么可能发生,关闭我的程序与菜单消失有什么关系?

另一方面,无论 alt 是否已经按下,发送 (alt down)(tab down)(tab up)(alt up) 键在所有情况下都有效,但由于其他原因我不能依赖这种行为.

如果有帮助,我正在使用 WinXP,我还没有在 Win7 计算机上尝试过。

【问题讨论】:

  • 这很麻烦,键盘状态是每个进程的属性,无论发生什么进程拥有前台窗口,您都无法找出键盘状态。它不会匹配你的。所以你可能做错了什么,我们看不到。
  • 然而,这如何导致 alt-tab 窗口卡在屏幕上?我检查了我的程序所做的所有事情都是发送(tab down)(tab up)输入。更奇怪的是,为什么关闭程序会使其消失?
  • 为什么不直接使用全套按键呢?你说它“适用于所有情况”。还有什么其他原因?

标签: c++ winapi sendinput


【解决方案1】:

在操作员单击 ALT-N 取消操作触发的事件中,执行 PostMessage WM_KEYDOWN、VK_TAB 会导致类似问题。因此,在发送选项卡时,ALT 键仍处于按下状态。由于我们的代码从不发送 WM_KEYUP,它一定是混淆了 Win XP。将 alt-tab 菜单留在屏幕上,直到应用程序退出。

【讨论】:

    【解决方案2】:

    我不知道这是否相关,但是 Alt+Ctrl+Tab 会导致菜单卡住,就像按 Alt+Tab 时 Alt 会卡住一样。所以你可能会以某种方式发送 Ctrl 信号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2011-06-12
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多