通过CPython / pywin32使用Windows UI Automation?

时间:2013-11-19 14:17:43

标签: python winapi com ui-automation

基于question I read and responded to on Reddit,我一直在研究通过Python(和pywin32)使用相对较新的Windows UI Automation框架来查询Google Chrome窗口中的自定义小部件。 UISpy向我展示了我感兴趣的控件,但命名约定和缺少窗口类让我相信UI自动化框架是访问它的唯一方法。我能够通过PythonWin和Makepy实用程序为UI自动化库生成COM存根,但实际上无法实例化COM对象。我没有很多COM经验,除了跟随Mark Hammond的“Win32上的Python编程”,通过COM用Python驱动Excel。我找到了一个article describing how to instantiate the COM object from C/C++,但我无法从中得到很多。

如果我能弄清楚如何实例化对象,我想我可以跟随API documentation

2 个答案:

答案 0 :(得分:3)

您可以使用awesome comtypes包轻松使用CPython脚本中的IUIAutomation COM接口。

这是我写的一个非常简单的演示:

https://github.com/billagee/test-polyglot/blob/master/printDesktopUiaElementName/ms-ui-automation-com-api/python/comtypes/print_desktop_uia_element_name.py

答案 1 :(得分:1)

尝试win32com.client.gencache,特别是GetModuleForCLSID(["e22ad333-b25f-460c-83d0-0581107395c9") - I32IAutomation的Win32实现的clsid。