2017-02-10 7 views
0

Я хочу использовать автоматизацию пользовательского интерфейса. Как описано в другом вопросе (https://stackoverflow.com/a/41768047/3402056) System.Windows.Automation устарела. Итак, мой вопрос - как использовать COM IUIAutomation с powershell?Как использовать IUIAutomation в powershell?

Существует командный элемент New-Object с параметром -ComObject. Этот параметр принимает имя создаваемого CoClass? Где я могу получить это?

+0

Привет, что вы пытаетесь сделать? – sodawillow

+0

Я пытаюсь получить объект COM IUIAutomation. 'New-Object -ComObject IUIAutomation' не работает. – dartNNN

+0

Это потому, что его имя интерфейса. Вы должны указать имя создаваемого CoClass. – Ben

ответ

1

System.Windows.Automation несколько устарела, но:

  • она работает достаточно хорошо для большинства операций, и я не уверен, что проблемы с производительностью, упомянутые в связанной статье связано с тем, что это осуждается.
  • он полагается на собственную Windows-оснастку UIAutomationCore.dll сборка, которая все равно содержит все новые коды, поэтому моя система System.Windows.Automation косвенно использует новые COM-объекты под ней.
  • Я считаю, что это единственный API, который вы можете использовать в PowerShell, потому что вы можете использовать объекты COM Automation (не путать с System.Windows.Automation), то есть: .NET, VB6, Scripting и т. Д. Не чистые IUnknown (не IDispatch).

В качестве альтернативы можно использовать UI Automation COM-to-.NET Adapter, который является более поздней версией сборки UIAutomationClient (написанной парнем Microsoft), но это необходимо только, если вам нужно для Windows 8 МАУ новых свойства и закономерность, или если вы наблюдайте, как он работает лучше для вас.