2017-01-04 3 views
0

Я делаю некоторые эксперименты с 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). Есть ли другой способ, как это сделать, или это невозможно?

ответ

1

Песочница приложений в модели UWP означает, что это невозможно.

Если у вас есть веские основания для необходимости сделать это, то сделать предложение (с основанием для необходимости его - это поможет вам быть более убедительным) на https://wpdev.uservoice.com/

+0

Это не звучит правильно. OP получает ошибку после добавления ссылки (которая не может использоваться в проекте UWP), то есть ошибка времени компиляции. Это не ограничение времени выполнения, и UI Automation хорошо поддерживается для приложений UWP. Если вы мне не верите, запустите calc.exe и посмотрите вокруг, используя инструмент [Inspect] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521.aspx). – IInspectable

+0

@ Изначальная часть изоляции процесса изолированной области означает, что один процесс UWP не может видеть в других приложениях. Ошибка выглядит как время выполнения для меня. Но он создан, потому что ограничения времени компиляции означают, что вы не можете включить ссылку на DLL, содержащую метод FindWindow в UWP. Я очень хорошо знаком с такими инструментами, как Inspect, но кажется, что OP хочет создать UWP, который делает что-то подобное в UWP, но в настоящее время это невозможно. (Несмотря на то, что Insect может запрашивать приложения UWP) –

+0

Я упустил из виду, что OP пытается запустить UI Automation ** из ** приложения UWP. Хотя приложение UWP позволяет регистрировать события, шаблоны или свойства для использования с помощью UI Automation, оно не может управлять другим приложением. Я все же утверждаю, что ошибка, которую наблюдает OP, не является ошибкой во время выполнения, а скорее неудачной попыткой разрешить ссылку зависимого типа. – IInspectable

Смежные вопросы