gpt4 book ai didi

python - 与线程一起使用时,使用 pywinauto.top_window() 会挂起

转载 作者:太空狗 更新时间:2023-10-30 01:32:06 24 4
gpt4 key购买 nike

如果我创建一个线程,它所做的只是连接到某个进程并获取其顶部窗口,那么程序就会挂起。

我稍微调试了一下,它似乎卡在了 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

在 pdb 中输入 step 后,它会显示这个然后卡住:

(Pdb) s
--Return--
> c:\python27\lib\site-packages\comtypes\__init__.py(970)from_param()-><POINTER... 41308a0>
-> return value

似乎问题出在线程中使用 comtypes,我尝试在调用线程(以及主线程)中调用 pythoncom.CoInitialize() 但它没有帮助。

这里可以做什么?

谢谢。

最佳答案

pywinauto==0.6.4 默认情况下对 COM 对象使用多线程模式 (MTA)。只需通过 pip install -U pywinauto 升级它并检查它是否适合您。

关于python - 与线程一起使用时,使用 pywinauto.top_window() 会挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45401017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com