• ベストアンサー

複数のプログラムの同時実行ができないように制御したいのですが…

このたびゲームを製作しているのですが、ゲーム本体と設定プログラムを同時に起動できなくしたいのですが、やり方がわからず困っています。 はじめはファイルのアクセス権を利用してやろうとしたのですが、うまくいきませんでした。(片方のプログラムであるファイルを開いておき、もう片方のプログラムでファイルを開こうとするとエラーが発生するという感じです) 何かいい方法は無いでしょうか?教えていただけると助かります。 よろしくお願いいたいますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

VC++.netでも普通に使えます。 VC++.netは単にフレームワークも使えるといえうだけで普通にAPIを呼ぶことも出来ます。 #1で提示したURLのソースでエラーがでるのは elseの中括弧がないからとかじゃないですか? 後、 OpenMutexとCreateMutexの第3引数が一致してないとか ちょっと不備があるサンプルでした。 正しくはこうです。 HANDLE hMutex; hMutex = OpenMutex(MUTEX_ALL_ACCESS, false, "ApplicationName"); if( hMutex != 0 ) { CloseHandle(hMutex); return 1; } else { hMutex = CreateMutex( NULL, true, "ApplicationName"); } >ミューテックスを作成したプログラムが何らかの形で強制終了してしまった場合、そのミューテックスは開放されるのでしょうか? 基本的に開放されます。

genki140
質問者

お礼

本当です、できました。 助かりました。ありがとうございますm(_ _)m

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

C#やVB.NETのサンプルですが、下記URLを見てください。MC++に移植するのも難しくはないでしょう。

参考URL:
http://jeanne.wankuma.com/tips/process/02-mutex.html
genki140
質問者

お礼

分かりました、がんばってみます。ありがとうございました。

すると、全ての回答が全文表示されます。
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

著しく環境に依存します。 実行環境と使用している開発ツールぐらいは書きましょう。

genki140
質問者

補足

情報不足ですみません・・・ OSはWindowsXPです。 開発環境は、VisualC++.net 2003を使用し、 ゲーム本体はWin32で製作し、設定プログラムは.net frameworkを使用して製作しています。

すると、全ての回答が全文表示されます。
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

方法は何通りかありますが、 簡単なのはCreateMutexを使う方法です。 「二重起動防止」で検索すればいっぱいひっかかりますよ。 http://kobe.cool.ne.jp/tanomi/qanda/a007.html

genki140
質問者

お礼

補足に書き忘れた質問がありましたので、こちらに書かせていただきます。 ミューテックスを作成したプログラムが何らかの形で強制終了してしまった場合、そのミューテックスは開放されるのでしょうか? 開放されないと、次の起動で多重起動ということになってしまいますよね^^;

genki140
質問者

補足

ありがとうございます。ミューテックスというものの存在をはじめて知りました。とても参考になりました。 Win32で試してみたところ成功したのですが、C++.NETで試してみたところ、エラーが発生してしまいました。(当たり前ですね^^;) 記述しなかった私が悪いのですが、ゲーム本体はWin32で、設定プログラムは.NETで製作しています。なので、.netのほうでのミューテックスを扱う方法を教えていただけると本当に助かります。 説明があいまいですみませんでした。

すると、全ての回答が全文表示されます。

関連するQ&A