玄関へお回り下さい。
アプリケーションの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
 





2004/05/23
2005/09/23


VBレスキュー(花ちゃん)
VB.NET2003  VB2005