トップページ > 過去ログ > 記事閲覧
DxLib_Initでの二重起動判定について
名前:まーす 日時: 2011/02/23 19:31

DxLib_Initでの二重起動判定について 以下のようなプログラムを書くと、大体DxLib_Init2~5回目に失敗してしまいます。 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE); while(1){ if(DxLib_Init() < 0){ break; } DxLib_End(); } MessageBoxA(NULL,"DxLib_Initが失敗した","",0); return 0; } 以下にログを書いておきます(DxLib_Init3回分なので長いですが) 0:システムの情報を出力します 2: DXライブラリ Ver3.04d 3: 論理プロセッサの数 : 4 5: OS Windows7 ( Build 7600 ) 106: CPU動作速度:大体3.17GHz 108: MMX命令を使用します 109: SSE命令が使用可能です 111: SSE2命令が使用可能です 113: CPUベンダ:GenuineIntel 119: CPU名:Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz 'Game.exe': 'C:\Windows\System32\dwmapi.dll' を読み込みました。Cannot find or open the PDB file 123:COMの初期化... 'Game.exe': 'C:\Windows\System32\cryptbase.dll' を読み込みました。Cannot find or open the PDB file 'Game.exe': 'C:\Windows\System32\uxtheme.dll' を読み込みました。Cannot find or open the PDB file 成功しました 139:メモリ総量:2999.12MB 空きメモリ領域:1077.66MB 1077.66MB 141:タイマーの精度を検査します 143:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 144: パフォーマンスカウンターを使用します タイマー分解能 : 3117.226000 KHz 147: ソフトの二重起動検査... 二重起動はされていませんでした 151:ウインドウクラスを登録します... 登録に成功しました 155:ウインドウモード起動用のウインドウを作成します 190:ウインドウの作成に成功しました 282:IMEを無効にしました 286:ウインドウスタイルをウインドウモード用に変更します... 完了 290:DirectInput関係初期化処理 291: DirectInput7 の取得中... 'Game.exe': 'C:\Windows\System32\dinput.dll' を読み込みました。Cannot find or open the PDB file 成功 323: 引き続き初期化処理... 初期化成功 331: ジョイパッドの初期化... 335: ジョイパッドの初期化は正常に終了しました 338: マウスデバイスの初期化... 初期化成功 340: キーボードデバイスの初期化... 初期化成功 344:DirectInput 関連の初期化は正常に終了しました 346:DirectSound の初期化を行います 347:DirectSound インターフェースの取得を行います.... 'Game.exe': 'C:\Windows\System32\dsound.dll' を読み込みました。Cannot find or open the PDB file 成功 371:引き続きインターフェースの初期化処理... 'Game.exe': 'C:\Windows\System32\MMDevAPI.dll' を読み込みました。Cannot find or open the PDB file 成功 424: DirectSound デバイスを列挙します 427: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 429: モジュール名:{0.0.0.00000000}.{bf53e930-06e7-494c-af28-cdabcd205168} ドライバ記述:スピーカー (High Definition Audio デバイス) 431: モジュール名:{0.0.0.00000000}.{4c12de59-d645-4b2d-acce-102c6c85d916} ドライバ記述:デジタル オーディオ (S/PDIF) (High Definition Audio デバイス) 433: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 435: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 436: 利用可能サンプリング精度 438: プライマリ 16bit = OK 8bit = OK 440: セカンダリ 16bit = OK 8bit = OK 441: 利用可能チャンネル 443: プライマリ MONO = OK STEREO = OK 444: セカンダリ MONO = OK STEREO = OK 446:DirectSound の初期化は正常に終了しました 452:DirectDraw オブジェクトの取得を行います.... 'Game.exe': 'C:\Windows\System32\ddraw.dll' を読み込みました。Cannot find or open the PDB file 成功 461:引き続き初期化処理... 'Game.exe': 'C:\Windows\System32\igdumdx32.dll' を読み込みました。Cannot find or open the PDB file 初期化に成功しました 516:IDirect3D9Ex オブジェクトを取得します.... 成功 521:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 790:成功 792:Driver:igdumdx32.dll Description:Intel(R) HD Graphics 794:画面のフォーマットは D3DFMT_X8R8G8B8 です 795:Zバッファのフォーマットは D3DFMT_D16 です 797:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 798:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 799:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 801:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 803:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 804:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 807:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 809:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 810:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 813:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 815:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 817:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 818:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 820:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 847:バックバッファロック転送の時間:5086nsec 一時的な描画可能バッファを使用した転送の時間:1120nsec 850:バックバッファロックを使用しません 851:Zバッファを作成します.... 成功 862:プログラマブルシェーダーを使用します 926:フォントの初期化を行います 933:フォントの初期化は正常に終了しました 936:文字コードバッファの初期化を行います... 完了しました 947:フォントの初期化を行います 950:フォントの初期化は正常に終了しました 1001:DirectInput 関連の終了処理... 完了 1064:DirectSound の終了処理は正常に終了しました 1068:ウインドウを閉じようとしています 1074:ウインドウが破棄されようとしています 1080:ソフトを終了する準備が整いました 1110: 1112:Alloc memory dump 1113: Total size:0(0.000kb) Alloc num:0 1114: 0:システムの情報を出力します 1: DXライブラリ Ver3.04d 2: 論理プロセッサの数 : 4 3: OS Windows7 ( Build 7600 ) 105: CPU動作速度:大体3.16GHz 107: MMX命令を使用します 108: SSE命令が使用可能です 109: SSE2命令が使用可能です 111: CPUベンダ:GenuineIntel 116: CPU名:Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz 118:COMの初期化... 成功しました 120:メモリ総量:2999.12MB 空きメモリ領域:1072.52MB 1072.52MB 124:タイマーの精度を検査します 125:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 128: パフォーマンスカウンターを使用します タイマー分解能 : 3117.226074 KHz 130: ソフトの二重起動検査... 二重起動はされていませんでした 135:ウインドウクラスを登録します... 登録に成功しました 139:ウインドウモード起動用のウインドウを作成します 141:ウインドウの作成に成功しました 154:IMEを無効にしました 157:ウインドウスタイルをウインドウモード用に変更します... 完了 160:DirectInput関係初期化処理 161: DirectInput7 の取得中... 成功 163: 引き続き初期化処理... 初期化成功 167: ジョイパッドの初期化... 170: ジョイパッドの初期化は正常に終了しました 172: マウスデバイスの初期化... 初期化成功 175: キーボードデバイスの初期化... 初期化成功 178:DirectInput 関連の初期化は正常に終了しました 180:DirectSound の初期化を行います 181:DirectSound インターフェースの取得を行います.... 成功 184:引き続きインターフェースの初期化処理... 成功 212: DirectSound デバイスを列挙します 'Game.exe': 'C:\Windows\System32\avrt.dll' を読み込みました。Cannot find or open the PDB file 215: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 217: モジュール名:{0.0.0.00000000}.{bf53e930-06e7-494c-af28-cdabcd205168} ドライバ記述:スピーカー (High Definition Audio デバイス) 219: モジュール名:{0.0.0.00000000}.{4c12de59-d645-4b2d-acce-102c6c85d916} ドライバ記述:デジタル オーディオ (S/PDIF) (High Definition Audio デバイス) 221: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 223: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 225: 利用可能サンプリング精度 226: プライマリ 16bit = OK 8bit = OK 228: セカンダリ 16bit = OK 8bit = OK 230: 利用可能チャンネル 231: プライマリ MONO = OK STEREO = OK 238: セカンダリ MONO = OK STEREO = OK 240:DirectSound の初期化は正常に終了しました 245:DirectDraw オブジェクトの取得を行います.... 成功 初期化に成功しました 297:IDirect3D9Ex オブジェクトを取得します.... 成功 302:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 573:成功 577:Driver:igdumdx32.dll Description:Intel(R) HD Graphics 581:画面のフォーマットは D3DFMT_X8R8G8B8 です 584:Zバッファのフォーマットは D3DFMT_D16 です 587:16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 590:32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 592:アルファ付き 16bit カラーフォーマットは D_D3DFMT_A4R4G4B4 です 594:アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 595:アルファテスト用 16bit カラーフォーマットは D_D3DFMT_A1R5G5B5 です 597:アルファテスト用 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 599:DXT1テクスチャフォーマットは D_D3DFMT_DXT1 です 600:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 602:DXT3テクスチャフォーマットは D_D3DFMT_DXT3 です 603:DXT4テクスチャフォーマットは D_D3DFMT_DXT4 です 605:DXT5テクスチャフォーマットは D_D3DFMT_DXT5 です 607:描画用 16bit カラーフォーマットは D_D3DFMT_R5G6B5 です 608:描画用 32bit カラーフォーマットは D_D3DFMT_X8R8G8B8 です 610:描画用アルファ付き 32bit カラーフォーマットは D_D3DFMT_A8R8G8B8 です 637:バックバッファロック転送の時間:4881nsec 一時的な描画可能バッファを使用した転送の時間:935nsec 638:バックバッファロックを使用しません 640:Zバッファを作成します.... 成功 650:プログラマブルシェーダーを使用します 719:フォントの初期化を行います 723:フォントの初期化は正常に終了しました 725:文字コードバッファの初期化を行います... 完了しました 734:フォントの初期化を行います 737:フォントの初期化は正常に終了しました 761:DirectInput 関連の終了処理... 完了 775:DirectSound の終了処理は正常に終了しました 778: 780:Alloc memory dump 781: Total size:0(0.000kb) Alloc num:0 783: 0:システムの情報を出力します 2: DXライブラリ Ver3.04d 3: 論理プロセッサの数 : 4 4: OS Windows7 ( Build 7600 ) 106: CPU動作速度:大体3.16GHz 108: MMX命令を使用します 120: SSE命令が使用可能です 126: SSE2命令が使用可能です 129: CPUベンダ:GenuineIntel 139: CPU名:Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz 141:COMの初期化... 成功しました 144:メモリ総量:2999.12MB 空きメモリ領域:1072.88MB 1072.88MB 146:タイマーの精度を検査します 147:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 148: パフォーマンスカウンターを使用します タイマー分解能 : 3117.226074 KHz 150: ソフトの二重起動検査... 二重起動されています、ソフトを終了します 157:ウインドウを閉じようとしています DxLib_Endの2回目の呼び出しではウィンドウを閉じられておらず DxLib_Init内では二重起動の判定にFindWindowを使用しているようなので、二重起動していると怒られているようです。 そもそもひとつのプロセスで何回もInitとEndを呼んではいけないのでしょうか?

Page: 1 |

Re: DxLib_Initでの二重起動判定について ( No.1 )
名前:管理人 日時:2011/03/05 01:48

私の手元では2回目で駄目でした・・・ 一つのプロセスで何回も DxLib_Init と DxLib_End を呼ぶことは禁止ではありませんが、 そもそも私のほうであまりそれを想定していませんでした 今回、何回 DxLib_Init DxLib_End を実行してもエラーが出ないようにしてみましたので、 よろしければまーすさんの環境でもエラーが発生しないかお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)

Page: 1 |