Impedir ejecutar más de una vez la misma aplicación

1915 vistas

El código mostrado a continuación permite detectar si la aplicación ya está en marcha. En tal caso, se mostrará un aviso.



vbnet
  1. Imports System.IO
  2. Imports System.Management
  3. Imports System.IO.Path





vbnet
  1.   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         '============================
  3.         '===    Las Variables
  4.         '============================
  5.         Dim Process As New ManagementObjectSearcher("SELECT * FROM Win32_Process") 'Leemos los procesos
  6.         Dim info As ManagementObject
  7.         Dim stock As String
  8.         Dim vrs As Integer
  9.  
  10.         '=== Recuperación de información del exe
  11.         Dim MyNameApp As New FileInfo(Application.ExecutablePath)  ' dónde está el programa
  12.         Dim SingApp As FileVersionInfo = FileVersionInfo.GetVersionInfo(MyNameApp.Name)
  13.  
  14.         For Each info In Process.Get
  15.             stock = info("Caption").ToString()
  16.             If stock = SingApp.OriginalFilename.ToString() Then
  17.                 vrs = vrs + 1
  18.                 If vrs > 1 Then
  19.                     MessageBox.Show("La aplicación '" & MyNameApp.Name & "' ya está ejecutándose", MsgBoxStyle.Critical)
  20.                     End
  21.                 End If
  22.             End If
  23.         Next
  24.     End Sub





vbnet
  1.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Process.Start(Application.ExecutablePath)
  3.     End Sub