- Q3
- Autorun.exeやスタートアップフォルダにアプリケーションプログラムがある場合、
リセット直後のプログラムの起動でハングアップすることがあります。
何か原因はありますか。
- A3
- リセット直後にアプリケーションが実行された場合、OS初期化中にアプリケーションが動作するため、
OSの機能の一部(Shell, GDI, Window Manager)が使えない状態になっていることがあります。
この状態で、アプリケーションでShell, GDI, Window Managerの機能を呼び出すと、
アプリケーションがハングアップしてしまいます。
下記回避方法にて対応が可能です。
<.回避方法>
IsAPIReay APIにてOSのReady()確認後、1秒程度、ウェイトを入れることで、問題を回避できることが確認されています。
以下に、コード例を示します。
extern “C” BOOL IsAPIReady(DWORD); // プロトタイプ宣言
Whie(!IsAPIReady(SH_SHELL) ||
!IsAPIReady(SH_GDI) ||
!IsAPIReady(SH_WMGR))
{
Sleep(1000);
}
Sleep(1000); // 1秒ウェイト
// ダイアログの表示
※MFCを使用したダイアログアプリケーションでは、アプリケー
ションクラスのInitInstance内で、ダイアログ表示を行う前に、
回避処理の追加をお願いします。