MSAAを使用したPythonバイナリ実行可能ファイルは出口に掛けられます

StackOverflow https://stackoverflow.com/questions/4707661

  •  11-10-2019
  •  | 
  •  

質問

Python Comtypesを使用して、MSAA(Microsoft Active Accessibility)の使用のIACCESSIBLEインターフェイスにアクセスできます。その後、Pyinstallerを使用してバイナリ実行可能ファイルを作成するため、問題は特定のプラットフォームで、Windows XP X64で実行可能なファイルが出口に掛かることです。 Process Exitポイントが呼び出された後、OLE32.dllのwaitfotmultipleObjectsexに吊るします - それは私たちのものではなく、Pyinstaller Boot Loaderでさえシステムコードに掛けられます。調査中、私たちは問題を見つけました - それは多くのiaccesableオブジェクトを作成することです(すなわち、子供の木の作成) - あなたがそれを行うと、プロセスがハングします。他の誰かが同様の問題に直面したかどうか知りたいですか?

PS他のOSでは正常に動作します。

役に立ちましたか?

解決

現在、この問題の根本的な理由を明確に理解することはできません。しかし、解決策が見つかりました。

最初:Counitialize関数に追加の呼び出しを追加します。 ComtypesがCoinitializeと同じ時間にCONINitializeを呼び出すために機能する理由がわかりません。

2番目:coinitializeexフラグを変更するには、coinit_apartmentthreadedが設定されている場合(sys.coinit_flagsが定義されていない場合、comtypesのデフォルト値です) - プロセスがハングします!だから私はcoinit_speed_over_memoryを選択しました、そしてすべてがうまくいきました!それを設定する最も簡単な方法は、comtypesをインポートする前にフォローすることです。

import sys
sys.coinit_flags = 0x8 # COINIT_SPEED_OVER_MEMORY == 0x8
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top