アプリケーションの2重起動を防止する(2個) (SNo.051) 1.Process.GetProcessesByName メソッドを使用してアプリケーションの2重起動を防止する 2.Mutex コンストラクター を使用してアプリケーションの2重起動を防止する |
|
使用コントロール | Button1 |
その他条件 | WindowsXP(Vista) Visual Basic 2005(VB2008) |
1.GetProcessesByName メソッドを使用してアプリケーションの2重起動を防止
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'Process.ProcessName プロパティ(プロセスの名前を取得します) Dim pn As String = Process.GetCurrentProcess.ProcessName 'Process.GetProcessesByName メソッド '指定したプロセス名を共有するリモートコンピューター上の 'すべてのプロセスリソースに関連付けます。 If Process.GetProcessesByName(pn).GetUpperBound(0) > 0 Then MessageBox.Show("同じアプリがすでに起動しています") Me.Close() End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'テスト起動 System.Diagnostics.Process.Start("051.exe") End Sub |
|
2.Mutex コンストラクター を使用してアプリケーションの2重起動を防止する Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'Mutex コンストラクター 'ミューテックスの名前を表す文字列を使用して、 'Mutex クラスの新しいインスタンスを初期化します。 Dim mt As New System.Threading.Mutex( _ False, Process.GetCurrentProcess.ProcessName) 'WaitHandle.WaitOne メソッド '現在の WaitHandle がシグナルを受信するまで現在のスレッドをブロックします If mt.WaitOne(0, False) = False Then MessageBox.Show("同じアプリがすでに起動しています") mt.Close() Me.Close() End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'テスト起動 System.Diagnostics.Process.Start("051.exe") End Sub |