VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/03/02(Wed) 15:05
投稿者L.O.N.
URL
タイトル二重起動防止について(Mutex使用)

いつもお世話になっています。

プログラムの二重起動防止にMutexを使用して実装しているのですが。
開発環境上で実行すると、
二重起動していないのに、二重起動していると判定されてしまいます。

発生状況は、このプログラムのプロジェクトを開いて、
一回目は正常にフォームが表示されるのですが、
二回目以降を、開発環境上で開こうとすると
上記のとおり、二重起動と判定されてしまいます。
(実行形式にすると、このエラーは発生しません。)

何故、そのようになってしまうのかわかりません。
どうか、ご教授下さい。

以下が、その実行しているコードです。

------------------------------
Option Explicit

Private SystemMutex      As Long                                'このプログラムのMutex値

'プログラム初期化時使用定数定義
Private Const MUTANT_ALL_ACCESS = &H1F0001                      '

Private Sub Form_Load()

Dim PrevhMutex          As Long
Dim ProgramID           As String

    ProgramID = "856EC91F-638E-4AD8-92B2-6F0A57CE287F"          'Mutex用文字列設定(GUID使用)

    PrevhMutex = OpenMutex(MUTANT_ALL_ACCESS, 0, ProgramID)     'このIDでMutexが作成済み
かチェック
    If PrevhMutex Then                                          '作成済みならば、二重起動
なので
        MsgBox "多重起動"
        CloseHandle PrevhMutex                                  '取得したハンドルをクローズ
        End                                                     'プログラムを終了する
    End If
                                                                'ここにきた場合は、Mutexが
作成されていないので、
    SystemMutex = CreateMutex(0, 0, ProgramID)                  'Mutexを作成する

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    
    ReleaseMutex SystemMutex                                    '使用していたMutexの削除

End Sub
------------------------------


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -