|
ありがとうございます。
これって [単一インスタンスのアプリケーションを作成する] を無効化した上で、
Private Sub Form0_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim mutexName As String = "MyApplicationName" 'Mutex名の先頭に「Global\」を付けて、Global Mutexにする mutexName = "Global\" & mutexName 'すべてのユーザーにフルコントロールを許可するMutexSecurityを作成する Dim rule As New System.Security.AccessControl.MutexAccessRule( New System.Security.Principal.SecurityIdentifier( System.Security.Principal.WellKnownSidType.WorldSid, Nothing), System.Security.AccessControl.MutexRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)
Dim mutexSecurity As New System.Security.AccessControl.MutexSecurity() mutexSecurity.AddAccessRule(rule) 'Mutexオブジェクトを作成する Dim createdNew As Boolean
' 初期所有権は与えず、名前付きミューテックスを作成 Using mutex As New System.Threading.Mutex(False, mutexName, createdNew, mutexSecurity) ' ミューテックスに入る ' (すでに他のプロセスがミューテックスの排他区間に入っている場合でも、待機せず即座に処理を返す) If mutex.WaitOne(0, False) = False Then ' ミューテックスに入った ' (このプロセス以外にミューテックスの排他区間に入っているプロセスはない)
Environment.Exit(0)
End If End Using
End Sub
のようにして使うのですよね??
なぜか多重にプログラムを起動できてしまうのですが 何が間違っていますでしょうか??
|