Mit unserem heutigen Tipp lässt sich prüfen, ob eine bestimmte Anwendung gestartet ist. Die Funktion IsAppRunning erwartet hierbei im ersten Parameter den Dateinamen der zu prüfenden Anwendung. Hierbei werden alle laufenden Prozesse durchlaufen und über das jeweilige Process-Objekt der Dateiname des Prozesses ermitteln. Über den zweiten optionalen Parameter kann festgelegt werden, ob nur der reine Dateiname oder gesamte Pfad+Dateiname verglichen werden soll. Wird die gesuchte Anwendung ausgeführt, kann über den dritten optionalen Parameter noch eine "Aktion" bestimmt werden, die ausgeführt werden soll, bspw. um die Anwendung zu aktivieren, schließen oder den gesamten Task zu beenden. Erstellen Sie ein neues Modul und fügen nachfolgenden Code ein: Imports System.Diagnostics Module Module1 ' Aktions-Konstanten Public Enum eActionState DoNothing = 0 DoActivate = 1 DoClose = 2 DoKill = 3 End Enum ' Prüft, ob eine bestimmte Anwendung gestartet ist Public Function IsAppRunning(ByVal sFilename As String, _ Optional ByVal bCompareFullPath As Boolean = False, _ Optional ByVal nAction As eActionState = eActionState.DoNothing) As Boolean ' alle laufenden Prozesse ermitteln Dim oProcessList As Process() = Process.GetProcesses Dim oProcess As Process Dim sProcessFile As String Dim bResult As Boolean ' Porzesse der Reihe nach durchlaufen For Each oProcess In oProcessList Try ' vollständigen Dateinamen (inkl. Pfad) des Prozesses ermitteln sProcessFile = oProcess.MainModule.FileName.ToLower If bCompareFullPath Then ' gesamter Pfad muss übereinstimmen bResult = (sProcessFile = sFilename.ToLower) Else ' nur EXE-Datei ohne Pfadangabe vergleichen bResult = (sProcessFile.IndexOf("\" & sFilename.ToLower) > 0) End If If bResult Then ' gewünschte Aktion ausführen Try If nAction = eActionState.DoActivate Then ' Anwendung aktivieren AppActivate(oProcess.MainWindowTitle) ElseIf nAction = eActionState.DoClose Then ' Anwendung beenden oProcess.CloseMainWindow() ElseIf nAction = eActionState.DoKill Then ' Anwendung (Task) beenden oProcess.Kill() End If Return True Catch ex As Exception Return False End Try End If Catch ex As Exception End Try Next End Function End Module Beispiele für den Aufruf: ' Ist WinWord gestartet? ' Wenn ja, soll WinWord aktiviert werden If Not IsAppRunning("winword.exe", , eActionState.DoActivate) Then MsgBox("WinWord ist nicht gestartet!") End If ' Ist MS-Excel gestartet? ' Wenn ja, soll Excel geschlossen werden If Not IsAppRunning("excel.exe", , eActionState.DoClose) Then MsgBox("MS-Excel ist nicht gestartet!") End If ' WinWord ohne Rücksicht auf Verluste beenden, falls gestartet IsAppRunning("winword.exe", , eActionState.DoKill) Dieser Tipp wurde bereits 41.761 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |