Я делаю некоторые эксперименты с UI Automation в приложениях UWP, и мне интересно, можно ли использовать следующий код в приложении UWP (Getting a Handle to a button in another window).AutomationElement в приложениях UWP
var hwnd = FindWindowByCaption((IntPtr)0, "App1");
AutomationElement lync = AutomationElement.FromHandle(hwnd);
AutomationElement optionsButton = lync.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.NameProperty, "something"));
((InvokePattern)optionsButton.GetCurrentPattern(InvokePattern.Pattern)).Invoke();
Если добавить "правильные" ссылки на мой UWP проекта
- UIAutomationClient
- UIAutomationTypes
Я получаю следующее сообщение об ошибке.
Cannot find type System.SystemException in module CommonLanguageRuntimeLibrary.
Я полностью понимаю, что я просто не могу сделать это таким образом (добавив эти ссылки на проекты UWP). Есть ли другой способ, как это сделать, или это невозможно?
Это не звучит правильно. OP получает ошибку после добавления ссылки (которая не может использоваться в проекте UWP), то есть ошибка времени компиляции. Это не ограничение времени выполнения, и UI Automation хорошо поддерживается для приложений UWP. Если вы мне не верите, запустите calc.exe и посмотрите вокруг, используя инструмент [Inspect] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521.aspx). – IInspectable
@ Изначальная часть изоляции процесса изолированной области означает, что один процесс UWP не может видеть в других приложениях. Ошибка выглядит как время выполнения для меня. Но он создан, потому что ограничения времени компиляции означают, что вы не можете включить ссылку на DLL, содержащую метод FindWindow в UWP. Я очень хорошо знаком с такими инструментами, как Inspect, но кажется, что OP хочет создать UWP, который делает что-то подобное в UWP, но в настоящее время это невозможно. (Несмотря на то, что Insect может запрашивать приложения UWP) –
Я упустил из виду, что OP пытается запустить UI Automation ** из ** приложения UWP. Хотя приложение UWP позволяет регистрировать события, шаблоны или свойства для использования с помощью UI Automation, оно не может управлять другим приложением. Я все же утверждаю, что ошибка, которую наблюдает OP, не является ошибкой во время выполнения, а скорее неудачной попыткой разрешить ссылку зависимого типа. – IInspectable