電子書籍の厳選無料作品が豊富!

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

何かいい方法は無いでしょうか?教えていただけると助かります。
よろしくお願いいたいますm(_ _)m

A 回答 (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");
}


>ミューテックスを作成したプログラムが何らかの形で強制終了してしまった場合、そのミューテックスは開放されるのでしょうか?
基本的に開放されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/30 20:19

C#やVB.NETのサンプルですが、下記URLを見てください。

MC++に移植するのも難しくはないでしょう。

参考URL:http://jeanne.wankuma.com/tips/process/02-mutex. …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/30 20:19

著しく環境に依存します。


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

この回答への補足

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

補足日時:2005/10/30 12:41
    • good
    • 0

方法は何通りかありますが、


簡単なのはCreateMutexを使う方法です。
「二重起動防止」で検索すればいっぱいひっかかりますよ。

http://kobe.cool.ne.jp/tanomi/qanda/a007.html

この回答への補足

ありがとうございます。ミューテックスというものの存在をはじめて知りました。とても参考になりました。
Win32で試してみたところ成功したのですが、C++.NETで試してみたところ、エラーが発生してしまいました。(当たり前ですね^^;)

記述しなかった私が悪いのですが、ゲーム本体はWin32で、設定プログラムは.NETで製作しています。なので、.netのほうでのミューテックスを扱う方法を教えていただけると本当に助かります。
説明があいまいですみませんでした。

補足日時:2005/10/30 12:38
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/30 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!