通知領域に入れるようなアプリケーションは常駐型が多いでしょう。
となるとスタートアップか、Vista以降だと管理者権限のログオン時タスクで起動をすることが多いと思います。
Windowsの起動中は色々面倒くさいのですが、Shell_NotifyIconも例外ではありません。
登録に失敗する場合、GetLastError()がERROR_TIMEOUTを返すものだと思っていましたが、タスクからの起動だとタイミングがもっと早いため、ERROR_FILE_NOT_FOUNDが返っていました。
タスクバーの通知領域(実体はツールウィンドウ)が見つからない場合に起こるそうな。ただしその後でTaskbarCreatedのメッセージが来るので、リトライせずともそちらでカバーできます。
何か原因不明のエラーで無限ループになっても困るので、リトライするならこの2つの場合だけにするか、回数制限をするのが良いのでしょう。
となるとスタートアップか、Vista以降だと管理者権限のログオン時タスクで起動をすることが多いと思います。
Windowsの起動中は色々面倒くさいのですが、Shell_NotifyIconも例外ではありません。
登録に失敗する場合、GetLastError()がERROR_TIMEOUTを返すものだと思っていましたが、タスクからの起動だとタイミングがもっと早いため、ERROR_FILE_NOT_FOUNDが返っていました。
タスクバーの通知領域(実体はツールウィンドウ)が見つからない場合に起こるそうな。ただしその後でTaskbarCreatedのメッセージが来るので、リトライせずともそちらでカバーできます。
何か原因不明のエラーで無限ループになっても困るので、リトライするならこの2つの場合だけにするか、回数制限をするのが良いのでしょう。
コメントする