編集: 質問を言い換えました。以下のコメントはすべて無視してください (5 月 7 日まで)。
まず、問題を説明します。
私のプロセスは、ITrayDeskBand::ShowDeskBand を使用してプログラムでデスクバンドを表示しようとしています。
OSがすべてのプロセスをロードしているとき(リセットまたはログアウト後)を除いて、いつでもうまく機能します。
Windows が起動し、さまざまなアプリケーションやサービスの読み込みを開始した後、マウス カーソルは数秒間待機するように設定されます (実行中のアプリケーションの数やすべての速度によって異なります)。
マウス カーソルが待機するように設定されていて、その間にプロセスが実行されている場合、呼び出しは失敗します。
ただし、プロセスが数秒待機してから (その後、カーソルが通常の状態になります)、呼び出しを呼び出すと、すべてがうまく機能します。
この動作は、Windows 7 と Windows Vista の両方で再現されました。
だから基本的に私が求めているのは:
1)基本的な知識のために、カーソルがビジーに設定されているときにOSは何をしますか?
2) より重要な質問: このプロセスが終了したことをプログラムで検出するにはどうすればよいですか?
最初は、エクスプローラーが正しくロードされていないと思ったので、WaitForInputIdleを使用しましたが、そうではありませんでした。
後で、ビジー カーソルは CPU がビジーであることを示していると考えたので、使用してプロセスを作成しましたIDLE_PRIORITY_CLASS
が、カーソルがビジーである間にアイドル時間が受信されました。