Rubrik: System/Windows · Prozesse/Tasks | VB-Versionen: VB.NET | 05.09.05 |
Prüfen, ob bestimmte Anwendung gestartet... (VB.NET) Mit diesem Code prüfen Sie, ob eine bestimmte Anwendung gestartet ist und können diese dann aktivieren, schließen oder den gesamten Task beenden. | ||
Autor: Dieter Otter | Bewertung: | Views: 41.707 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
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)