質問: win32gui.EnumWindows(EnumWindowsProc, 0) ``` 結果は変化ありませんでした。 ### 例外処理による回避策について 本事象の回避策として、例外処理をすれば問題なく処理を進められるかと思います。 しかし、今後も利用頻度は少なくないであろう API についてでしたので、 利用方法に落ち度があるのであれば、どう改善すべきか、 または、win32gui 配下で EnumWindows を利用する以上、エラーを発生させない方法はないのか、 など、例外処理以外の回避策の有無やその内容について確認したくご質問させて頂きました。 もし上記事象について何かご存じの方がいらっしゃいましたら、 ご回答頂けますと幸甚です。
回答: ええと、pywin32のドキュメントによると、 > > callback : function > > A Python function to be used as the callback. Function can return False to stop enumeration, or raise an exception. > > > win32gui.EnumWindows - Python for Win32 Extensions Help ということで、「コールバック関数は列挙を止めるためにFalseを返すことができ、言い換えると例外を発生させることができる」と書いてある(よね? この", or")ので、例外が発生するのはwin32gui.EnumWindowsの仕様のようです。 なお、例外処理をせずにEnumWindowsを実行するには、ctypesを使ってuser32.dllのEnumWindowsを呼び出すコードを書けばいいのですが(Stack Overflowにいくつかコード例が見つかります。「python ctypes enumwindows」で検索)、どれかひとつ見ればわかるようにかえって長くなるので。