2017-02-22 34 views
2

Я могу получить некоторые IUIAutomationElements внутри приложений Windows ТОЛЬКО, когда приложение «X» (Inspect.exe | Narrator.exe | Magnify.exe). Без «X» приложение, из которого я пытаюсь получить IUAutomationElement, по существу становится черным ящиком. Например, внутри Microsoft Excel я могу получить идентификатор ячейки (A1, D6 и т. Д.), Когда «X» запущен. Без «X» в фоновом режиме наиболее детальными деталями, которые я получаю, является сама книга Excel.Невозможно получить самый глубокий элемент IUIAutomationElement без одного из файлов Inspect.exe, Magnify.exe, Narrator.exe

Я попытался установить uiAccess = true и подписал приложение (используя http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/nftechsupt.web+WinBatch/Manifest+Manifest~Faqs.txt), переместив его в безопасное (программные файлы), и это не сработало.

FYI: Dev Env: проект C++, Microsoft Visual Studio 2015, Community Edition.

+0

Excel действительно UI автоматизация совместима. У вас есть образец, воспроизводящий проблему? Обратите внимание, что приложение должно * запускать * на том же уровне UAC (если Excel не запускается как admin, приложение не должно запускаться как admin и т. Д.). Он не связан с сигнатурой, программными файлами, и он должен иметь возможность запускать без манифеста –

+0

Спасибо за предложение уровня UAC. Так оно и было. – RealSalazar

+0

вы можете указать пример кода, как вы это сделали? –

ответ

1

В общем, для автоматизации пользовательского интерфейса автоматическое приложение должно работать на том же UAC level, что и приложение, которое его автоматизирует.

Так, например, если Excel не побежал как администратор, приложение должно Automating не запускать как администратор, или если Excel побежал в качестве администратора, приложение Automating должен работать как администратор и т.д.