exi上挂起带有MSAA的Python二进制可执行文件

2024-10-03 15:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python comtypes来访问IAccessible interface for MSAA(microsoftactiveaccessibility)用法。之后,我们使用pyinstaller创建二进制可执行文件,所以问题是在特定的平台(windowsxpx64)上,我们的可执行文件在退出时挂起。在我们的引导程序中挂起的是objectfoulti.dll,也不是挂在我们的启动程序后。在调查过程中,我们找到了问题所在——这是在创建许多IAccessable对象(即创建子树)时——如果你这样做,进程就会挂起。想知道其他人是否也面临同样的问题吗?在

另外,在其他操作系统上也能正常工作。在


Tags: 程序可执行文件用法for二进制平台interfacedll
1条回答
网友
1楼 · 发布于 2024-10-03 15:31:26

我目前还不清楚这个问题的根本原因。但解决办法还是找到了,哪怕是两个。在

第一:添加对CoUninitialize函数的附加调用。 为什么CoInitialize和CoInitialize times一样有效。在

第二:要更改CoInitializeEx标志,因为如果设置了COINIT_APARTMENTTHREADED(如果sys.coinit_标志未定义)-进程挂起!所以我选择了COINIT_SPEED_u MEMORY,一切都变好了!设置它的最简单方法是在导入comtypes之前执行以下操作:

import sys
sys.coinit_flags = 0x8 # COINIT_SPEED_OVER_MEMORY == 0x8

相关问题 更多 >