ほかのexeファイルの2重起動防止
ProcesのIDを利用する
考え方
・該当exeファイルのプロセスを取得する
・取得したプロセスから当該システムから起動したプロセスIDを取得する
・合致するIDであればエラーとする
・画面を閉じるときに当該システムから起動したプロセス(ID)であれば一緒に閉じる実装
Public Class process //変数 Private p As System.Diagnostics.Process Private pId As Integer = Nothing //クローズ Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click //当該システムで開いたメモ帳を閉じる If CheckProessId() Then p.CloseMainWindow() p.Close() p.Dispose() End If Me.Close() End Sub //プロセス Private Sub btnCallAnoterProgram_Click(sender As Object, e As EventArgs) Handles btnCallAnoterProgram.Click //Processを利用して該当のアプリが起動中かチェックする If CheckProessId() Then MsgBox("メモ帳は既に起動済です。" & vbCrLf & "メモ帳を閉じてから再度ボタンをクリックしてください。", MsgBoxStyle.Exclamation, "警告") Exit Sub End If //メモ帳の起動 p = System.Diagnostics.Process.Start("notepad.exe") pId = p.Id End Sub //ProcessIDをもとに当該システムで起動したアプリかチェックする //True : 起動済 / Flase : 未起動 Private Function CheckProessId() As Boolean CheckProessId = False Dim pCheck As System.Diagnostics.Process Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("notepad") //配列から1つずつ取り出す For Each pCheck In ps If pCheck.Id = pId Then Return True End If Next pCheck End Function End Class