Para conseguir ese objeto usaremos el evento [ Startup ] de la clase [ Application ] escribiendo el código que se muestra a continuación
Class Application ''' <summary> ''' Indica si la aplicación es de instancia única (solo se ejecuta una vez) [True] ''' o bien puede haber varias instancias de la misma funcionando [False] ''' Se comprueba en el evento [Startup] ''' </summary> Private Shared ReadOnly campoEsIntanciaUnica As Boolean = True ''' <summary> ''' Se produce cuando se llama al método Run() del objeto Application. ''' </summary> ''' <remarks> ''' <dcterms.abstract> ''' <content> ''' Aquí se comprueba si existe otra aplicación rodando y si es así ''' se cierra la aplicación para que solo se este ejecutando una ''' </content> ''' </dcterms.abstract> ''' <dcterms.bibliographicCitation> ''' <content>https://learn.microsoft.com/es-es/dotnet/api/system.windows.application.startup?view = windowsdesktop-7.0</content> ''' </dcterms.bibliographicCitation> ''' <dcterms.created> ''' <scheme>dcterms.ISO8601</scheme> ''' <content>2023-10-15 T 22:24:47</content> ''' </dcterms.created> ''' </remarks> Private Sub Application_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup '-------------------------------------------------------- ' Comprobación de Instancia única (Singleton) ' [campoEsIntanciaUnica] ' Indica si la aplicación es de instancia única (solo se ejecuta una vez) [True] ' o bien puede haber varias instancias de la misma funcionando [False] '------------- If campoEsIntanciaUnica = True Then ' Obtener el proceso en ejecución Dim thisProc As Process = Process.GetCurrentProcess() ' Obtener el nombre del proceso ' si hay mas de un proceso con el mismo nombre ' hay que cerrar uno de ellos If Process.GetProcessesByName(thisProc.ProcessName).Length > 1 Then '------------------------------------------------------------------------------- ' Mensaje avisando de que la aplicación ya se esta ejecutando ' Dim caption As String = "PROBLEMA" Dim message As String = "La aplicación ya se esta ejecutando. Es de instancia única. Se cierra la nueva, solo una funciona" Dim buttons As MessageBoxButton = MessageBoxButton.OK Dim icon As MessageBoxImage = MessageBoxImage.Warning Dim defaultResult As MessageBoxResult = MessageBoxResult.OK Dim options As MessageBoxOptions = MessageBoxOptions.None 'Show message box Dim result As MessageBoxResult = MessageBox.Show(message, caption, buttons, icon, defaultResult, options) '------------------------------------------------------------------------------- ' cerrando el proceso Application.Current.Shutdown() End If End If ' /Eof Instancia única (Singleton) '-------------------------------------------------------- End Sub End Class