cyd*_*dan 5 python com multithreading pywinauto comtypes
如果我创建一个线程,它所做的就是连接到某个进程并获得它的顶部窗口,那么程序就会挂起.
我调试了一下它似乎陷入了comtypes._compointer_base.from_params.这是整个追溯:
...
-> self.top_win = self.app.top_window()
c:\python27\lib\site-packages\pywinauto\application.py(1095)top_window()
-> backend=self.backend.name)
c:\python27\lib\site-packages\pywinauto\findwindows.py(197)find_elements()
-> cache_enable=True)
c:\python27\lib\site-packages\pywinauto\uia_element_info.py(272)children()
-> return self._get_elements(IUIA().tree_scope["children"], cond, cache_enable)
c:\python27\lib\site-packages\pywinauto\uia_element_info.py(261)_get_elements()
-> ptrs_array = self._element.FindAll(tree_scope, cond)
> c:\python27\lib\site-packages\comtypes\__init__.py(970)from_param()
-> return value
Run Code Online (Sandbox Code Playgroud)
在pdb中键入步骤后,它显示此然后冻结:
(Pdb) s
--Return--
> c:\python27\lib\site-packages\comtypes\__init__.py(970)from_param()-><POINTER... 41308a0>
-> return value
Run Code Online (Sandbox Code Playgroud)
似乎问题是在线程中使用comtypes,我试图在调用线程(也在main)中调用pythoncom.CoInitialize(),但它没有帮助.
这可以做什么?
谢谢.