Pressing Win+X, Alt-Tab programmatically

Pressing Win+X, Alt-Tab programmatically

本文关键字:programmatically Alt-Tab Win+X Pressing      更新时间:2023-10-16

我试图模拟Windows 8上的Win+X的按键事件,应该弹出一个小菜单,但我无法通过使用SendInput来实现这一点。对于任何其他组合键(例如Win+R, Win+E, Win+D),它可以工作,但不适用于Win+X。我注意到Synergy+也有同样的问题,但Windows屏幕键盘没有。我还查看了屏幕上键盘使用的SendInput参数,但如果我在应用程序中使用完全相同的参数,我仍然无法获得菜单。

那么我的问题是,我如何让它工作?或者是否有其他方式显示此菜单?

我最近在我们的应用程序中添加了对此的支持。很高兴我们打败了竞争对手!

在Windows 8中有新的upi限制。最常用的阻塞快捷键是Alt+Tab,所以你要做的是解决方法。

你必须在清单中用uiAccess="true"标记你的二进制文件。(有关如何做到这一点的更多细节,请谷歌。)此清单防止启动二进制文件,除非使用microsoft批准的代码签名证书进行签名并安装在"安全位置"(system32或Program Files/Program Files (x86))。

如果你从任何助手启动你的程序:uiAccess二进制文件不能用CreateProcess从中等完整性进程启动(清单标记它需要"高"完整性)。相反,使用ShellExecute"打开"来启动它是最容易的,以使外壳提升它。如果使用CreateProcessAsUser,则必须使用SetTokenInformationTokenUIAccess设置为1,否则启动将失败。

最后的附加条件:注意uiAccess非常严格地限制了进程可以做什么。您无法从正常(中等完整性)进程接收UI输入,因此其他应用程序无法与您的窗口交互。如果您还没有遵循将UI分离为单独进程的良好实践,那么这将是一个很好的理由。或者,需要uiAccess的任务可以放在一个小的、自包含的助手二进制文件中,并且完全与非ui进程分离。你的主应用程序可以把它作为一个高完整性的辅助进程来运行,它会根据需要发送指令来执行那些特定的任务(比如SendInput)。

最后,SendInput将工作

相关文章:
  • 没有找到相关文章