投稿日 | : 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
------------------------------