使用python库uiautomation获取某个桌面软件的窗体。
import uiautomation as uia
app = uia.windowscontrol(searchdepth=1,Name="xxx",classname="xxx")
app.swichtothiswindow()
报错,Find Control Timeout(10s),但是用windows kit中的inspect.exe是能够确切找到桌面上对应窗体的classname、name、processid等信息的,也就是说该应用组件是存在的。
通过各种不同猜测,并测试,最后发现即便桌面上开启了很多软件,但用uia直接获取所有节点信息,也只能获取到root根节点,或是“开始”、“任务栏”、“托盘图标”、“时间”等组件。
所以,来到代码目录下,用管理员身份运行cmd窗口运行上述代码能正常获取窗体信息。
回到IDE,关闭后,右键以管理员身份打开IDEA,再次运行,可以正常获取app并打印。
总结,uiautomation获取不到对应组件的原因之一:权限不足,但是同样的代码在另一台电脑上未出现过权限问题。
可能是IDEA安装时的配置差异、电脑系统的用户控制权限不同等原因……