c++ - 如果不运行 Inspect.exe、Magnify.exe、Narrator.exe 之一,则无法获取最深的 IUIAutomationElement

标签 c++ windows ui-automation microsoft-ui-automation

仅当应用程序“X”(Inspect.exe | Narrator.exe | Magnify.exe)运行时,我才能在 Windows 应用程序中获取一些 IUIAutomationElements。如果没有运行“X”,我尝试从中获取 IUAutomationElement 的应用程序本质上就变成了一个黑匣子。例如,在 Microsoft Excel 中,当“X”运行时,我可以获得单元格标识符(A1、D6 等)。如果背景中没有“X”,我获得的最精细的细节就是 Excel 工作簿本身。

我尝试设置 uiAccess=true 并对应用程序进行签名(使用 http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/nftechsupt.web+WinBatch/Manifest+Manifest~Faqs.txt ),将其移动到安全(程序文件)位置,但没有成功。

仅供引用:开发环境:C++ 项目,Microsoft Visual Studio 2015,社区版。

最佳答案

一般来说,要使 UI 自动化发挥作用,自动化的应用程序必须同时运行 UAC level比自动化它的应用程序。

例如,如果 Excel 不是以管理员身份运行,则自动化应用程序不得以管理员身份运行,或者如果 Excel 以管理员身份运行,则自动化应用程序必须以管理员身份运行,等等。

关于c++ - 如果不运行 Inspect.exe、Magnify.exe、Narrator.exe 之一,则无法获取最深的 IUIAutomationElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42383170/

相关文章:

c++ - 使用Gtkmm在Gtk::TextView中以编程方式选择文本

c++ - C++ 需要函数原型(prototype)吗?

Windows 批处理 : How to disable QuickEdit Mode for individual scripts?

c++ - Windows 错误消息

ui-automation - 如何在 Teststack White 中实现动态超时?

java - 通过属性文件配置 Selenium 服务器

python - ctypes找不到find dll函数

c++ - 自动移动一个 Sprite 来捕捉另一个 Sprite

.net - CLR 如何实现 COM 实现的二进制级别的互操作性?或者不?

c# - 确定应用程序是否被阻止/忙碌?