今回初めて投稿させていただきます。
環境はWin2000、VC++6.0です。
VC++で排他制御をしたいと思っているのですが、可能でしょうか?
MSDN調べていたところCMutexがあったのですが、これは排他をかけるものかと
思いまして投稿させていただきました。
CMutexには引数が3つあるかと思いますが、何を渡したらよいか分かりません。
何方かサンプル若しくはご存知の方がいましたら教えていただけませんでしょうか?
一口に排他制御といわれても
2重起動の防止ですか?編集中のファイルの保護ですか?
MSDNにサンプルがあるじゃないですか。
googleでの検索結果
CMutex785件 ミューテクス57件 ミューテックス642件
CMutex mutex(FALSE, m_pszExeName);
if( mutex.Lock(0) == TRUE ) {
mutex.Unlock();
}
CMutex mutex(FALSE, m_pszExeName);
if( mutex.Lock(0) == TRUE ) {
mutex.Unlock();
}
間違えて2重送信をしてしまいました。すみません。
排他制御はアプリケーションの2重起動防止です。
以下の用な処理をしているのですが上手くいかないのが現状です。
BOOL C?????App::InitInstance()
{
CMutex mutex(FALSE, m_pszExeName);
if( mutex.Lock(0) == TRUE ) {
mutex.Unlock();
}
return FALSE;
}
起動するとUnlock処理に走ってしまいます。
間違っていましたら教えてください。
2重起動の防止なら過去ログを参照してください。
CMutexを使用しなくても2行で実現できます。
> if( mutex.Lock(0) == TRUE ) {
> mutex.Unlock();
> }
うまく施錠できたとたんにそれを解除しているのですから、
鍵はいつも開けっ放しですよね。
二重起動防止が出来ました。ありがとうございました。
職業婦人さん言う2行では出来ませんでしたが、以下のようにしましたら出来ました。
HANDLE hMutex;
hMutex = CreateMutex(NULL, TRUE, test);
if (!hMutex)
return FALSE;
if (GetLastError() == ERROR_ALREADY_EXISTS)
return FALSE;
ありがとうございました。