我最近在我们的应用程序中添加了对此的支持。很高兴我们击败了我们的竞争对手!
Windows 8 中有新的 UIPI 限制。最常用的被阻止快捷方式是Alt+ Tab,因此您需要解决此问题。
您必须uiAccess="true"
在清单中标记您的二进制文件。(有关如何执行此操作的更多详细信息,请 google。)此清单可防止启动二进制文件,除非使用 Microsoft 批准的代码签名证书进行签名并安装在“安全位置”(system32 或 Program Files/Program Files (x86)) .
如果您从任何助手启动程序: uiAccess 二进制文件无法CreateProcess
从中等完整性进程启动(清单将其标记为需要“高”完整性)。相反,最简单的方法是使用ShellExecute
“open”启动它,让 shell 提升它。如果 using CreateProcessAsUser
,则必须设置TokenUIAccess
为 1 using SetTokenInformation
,否则启动将失败。
最后的附带条件:请注意,uiAccess 非常严格地限制了进程可以执行的操作。您无法从正常(中等完整性)进程接收 UI 输入,因此其他应用程序无法与您的窗口交互。如果您尚未遵循将 UI 分离到单独进程中的良好做法,那么这将是这样做的一个很好的理由。或者,可以将需要 uiAccess 的任务放入一个小的、自包含的辅助二进制文件中,并与非 UI 进程完全分离。您的主应用程序可以将其作为高完整性帮助进程运行,该进程会根据需要发送指令以执行这些特定任务(例如SendInput
)。
最后,SendInput
会工作。