2011-01-16 3 views
1

私はMSAA(Microsoft Active Accessibility)用のIAccessibleインターフェイスにアクセスするためにpython comtypesを使用しています。その後、Pyinstallerを使用してバイナリ実行可能ファイルを作成するので、問題は特定のプラットフォームで発生します.Windows XP x64の実行ファイルは終了時にハングします。プロセス終了ポイントが呼び出された後、ole32.dllのWaitFotMultipleObjectsExにハングアップします。これは、私たちのシステムコードでも、pyinstallerのブートローダでもないシステムコードでハングします。調査中に問題が見つかりました。つまり、多くのIAccessibleオブジェクト(つまり、子ツリーの作成)が作成されています。実行すると、プロセスがハングします。他の誰かが同様の問題に直面したかどうか知りたいですか?MSAAを使用したPythonバイナリ実行可能ファイルは終了時にハングします

P.S.他のOSではうまく動作します。

答えて

0

現在、この問題の根本的な原因を明確に理解できません。しかし、解決策は2つ見つかった。

最初に、CoUninitialize関数の追加呼び出しを追加します。 ComtypesがCoInitializeと同じ回数CoUninitializeを呼び出すときに、なぜ動作するのか分かりません。

2番目:CoInitializeExフラグを変更する場合は、COINIT_APARTMENTTHREADEDが設定されていると発生します(sys.coinit_flagsが定義されていない場合はcomtypesのデフォルト値) - プロセスがハングします!だから私はCOINIT_SPEED_OVER_MEMORYを選んだが、すべてがうまくなった!これを設定する最も簡単な方法は、タイプをインポートする前に次の操作を行うことです:

関連する問題