-PR-
締切済み

2重起動の防止

  • 困ってます
  • 質問No.46489
  • 閲覧数435
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 67% (39/58)

C++Builder5.0でアプリケーションの2重起動の防止
を実現する方法を教えて下さい。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル3

ベストアンサー率 0% (0/0)

C++Builderがどのようなものか知らないのでWin32一般的に説明します。 ------------------------------------------------------------ static HANDLE hInstanceMutex = NULL; BOOL IsExistInstanceMutex(const char* s) { HANDLE hPrevM ...続きを読む
C++Builderがどのようなものか知らないのでWin32一般的に説明します。

------------------------------------------------------------
static HANDLE hInstanceMutex = NULL;

BOOL IsExistInstanceMutex(const char* s)
{
HANDLE hPrevMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE, s);
if(hPrevMutex) {
CloseHandle(hPrevMutex);
return FALSE;
}
hInstanceMutex = CreateMutex(FALSE, 0, s);
return TRUE;
}
void ReleaseInstanceMutex()
{
if(hInstanceMutex)
ReleaseMutex(hInstanceMutex);
}
------------------------------------------------------------

起動時にIsExistInstanceMutexを呼んでTRUEが返るなら前のアプリは無し
FALSEが返る場合は、2重起動なのでメッセージを表示して終了。
アプリケーションの終了時にReleaseInstanceMutexを呼ぶ。
IsExistInstanceMutexのsにはアプリケーションを識別する名前を指定しておく。

という感じでどうでしょう?
お礼コメント
Richi

お礼率 67% (39/58)

御返事ありがとうございました。
投稿日時 - 2001-03-04 23:39:08
関連するQ&A


  • 回答No.2
レベル11

ベストアンサー率 37% (110/293)

C++Builder5使用者です。 下のseataさんの方法で全く問題ありません。 もちろん起動時に調べないと防止できないのでこれはWinMainで記述します。 最後に参考になるページをあげておきます。 C++BuilderのTipsページは結構ありますよ。 ...続きを読む
C++Builder5使用者です。
下のseataさんの方法で全く問題ありません。

もちろん起動時に調べないと防止できないのでこれはWinMainで記述します。

最後に参考になるページをあげておきます。
C++BuilderのTipsページは結構ありますよ。
お礼コメント
Richi

お礼率 67% (39/58)

御返事ありがとうございました。
投稿日時 - 2001-03-04 23:42:06
  • 回答No.3
レベル7

ベストアンサー率 66% (6/9)

C++Builder5.0は経験ないのですが。C++Builder4.0/3.0では以下の様にすればOKでした。C++Builder5.0でも同様だと思います。 winmain()の先頭でFindWindow()(WIN32API)を使用して同じクラスまたはウインドウタイトルをもつウインドウが起動されていない事を確認すればOK FindWindow()についてはC++Builder5.0のCD-R ...続きを読む
C++Builder5.0は経験ないのですが。C++Builder4.0/3.0では以下の様にすればOKでした。C++Builder5.0でも同様だと思います。

winmain()の先頭でFindWindow()(WIN32API)を使用して同じクラスまたはウインドウタイトルをもつウインドウが起動されていない事を確認すればOK
FindWindow()についてはC++Builder5.0のCD-ROMにWin32日本語ヘルプがついているはずなのでそれを見ればOK
C++Builder4.0/3.0にはついていた。
お礼コメント
Richi

お礼率 67% (39/58)

御返事ありがとうございました。
投稿日時 - 2001-03-04 23:44:14
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ