HOME Tech Memo FastCopy IP Messenger

Win32 ShellExecute系APIの注意点

リスト 白水啓章
作成 2024/01/06

概要

Win32 ShellExecute系APIは、内部で短時間メッセージループが回るため、思わぬ副作用にご注意という話。

詳細

Win32 ShellExecute系APIは(デフォルトでは)内部で短時間メッセージループが回ります。
すると下記のようなシナリオが起きると、思わぬ動作になります。

解決

・ShellExecute系を新規スレッドで実行。
 (私はこの方式に変更。スレッド先頭で PeekMessage=メッセージキュー作成すると良い)
・ShellExecuteEx系だと SEE_MASK_NOASYNC指定で回避できるかも?(未確認)

備考

IP Messenger でこれが稀に発生していたことに今年(28年ぶり!)気づきました…うーむ。