我有已签名的 winforms 应用程序,并且清单具有 level="requireAdministrator" uiAccess="false"。
我想启动另一个带有隐藏窗口的应用程序并使用 UI 自动化 API 使用它。
Process procinst = new Process();
procinst.StartInfo = new ProcessStartInfo()
{
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = true,
ErrorDialog = true,
Verb = "runas",
FileName = appfilepath
};
procinst.Start();
在 Spy++ 中可以看到带有隐藏窗口的新进程,但在 UISpy 中看不到,我也无法使用 FindFirst 方法找到它:
mainwnd = AutomationElement.RootElement.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "apptitle"));
当 ProcessWindowStyle 被最小化时,一切都很好,当它被隐藏时 - 一切都停止了。
是预期的 UI 自动化行为吗?UI 自动化无法访问隐藏窗口?有没有办法破解它?