Rubrik: Verschiedenes / Sonstiges | VB-Versionen: VB.NET | 27.12.05 |
App.PrevInstance für VB.NET Mehr als nur eine Ersatzfunktion für die unter VB6 bekannte App.PrevInstance Eigenschaft! | ||
Autor: Dieter Otter | Bewertung: | Views: 22.772 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Unter VB6 konnte man beim Starten der eigenen Anwendung mit Hilfe der App.PrevInstance-Eigenschaft schnell und einfach prüfen, ob die Anwendung bereits gestartet ist, um so einen Mehrfachaufruf der Anwendung zu verhindern. Unter VB.NET gibt es diese Eigenschaft aber leider nicht mehr.
Nachfolgend eine Ersatzfunktion für VB.NET, mit der sich im Gegensatz zur VB6-Funktion die Erst-Instanz der Anwendung über den optional Parameter "bAppActivate" auch noch direkt aktivieren lässt!
' Anwendung bereits gestartet? Public Function AppPrevInstance(Optional ByVal bShowMsg As Boolean = True, _ Optional ByVal bAppActivate As Boolean = True) As Boolean ' Anzahl der gestarteten Prozesse der eigenen Anwendung If Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName).Length > 1 Then ' Hinweis anzeigen If bShowMsg Then MsgBox("Anwendung wird bereits ausgeführt!") ' Erst-Anwendung aktivieren If bAppActivate Then AppActivate(Process.GetProcessesByName(Process.GetCurrentProcess.ProcessName)(1).Id) End If Return True End If End Function
Beispiel für den Aufruf:
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Falls Anwendung bereits gestartet, Hinweis anzeigen ' und Erst-Instanz aktivieren... If AppPrevInstance() Then ' ... und neue Instanz sofort wieder beenden Application.Exit() End If End Sub