from ctypes import WinError
すると NameError ではなく下記のエラーが出るようになります。
WindowsError: [Error 1410] そのクラスは既にあります。
本質的な問題はプラグインのリロードを実行したときに windll.user32.RegisterClassA が二重登録になることなので、GlobalPlugin クラスの terminate メソッドで適切な後処理が必要と思います。 引き続き検討します。
focusHighlight アドオンの「プラグインの再読み込み」での不具合修正についてのスナップショット:
https://dl.dropboxusercontent.com/u/62564469/focusHighlight-1.1-dev.nvda-addon
プラグイン再読み込みでハイライトが重複して表示される不具合などを直したのですが、ややNVDAの終了処理が不安定になった気がするので、引き続き調査中です。
もしこの不具合が気になっていた人がいらっしゃったらお試しください。
Windows 8.1 でプラグインの再読み込みをすると「そのクラスはすでにあります」というエラーが出るので、 まだ修正が不完全のようです。
プラグインの再読み込みの前にインスタンスが破棄されるときに UnregisterClass が失敗する不具合(2月23日のコメント)を修正しました。
ファイル名は変えていませんが、Dropbox のファイルを差し替えました。
focusHighlight アドオンの「プラグインの再読み込み」での不具合修正のスナップショット:
https://dl.dropboxusercontent.com/u/62564469/focusHighlight-1.1-dev.nvda-addon
Windows 7 と 8.1 で検証して、良さそうなので nvdajpaddonteam/focushighlight.git の master に push しました。
バグ修正のコメントを readme.md に追加したので、本家のアドオンチームと翻訳チームでレビューや翻訳が必要。。
アドオン紹介サイトのバージョンでも本件の問題は直っていると思うので、クローズします。
たぶん「プラグインの再読み込み」を実行したときだと思うのですが、focusHighlight アドオンが下記のようにNameErrorを出しています。
ERROR - stderr (15:16:55): Exception in thread Thread-9: Traceback (most recent call last): File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "C:\work\nvda\nvdajp\source\userConfig\addons\focusHighlight\globalPlugins\focusHighlight.py", line 328, in _bg HighlightWin() File "C:\work\nvda\nvdajp\source\userConfig\addons\focusHighlight\globalPlugins\focusHighlight.py", line 242, in HighlightWin raise WinError() NameError: global name 'WinError' is not defined