vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: System/Windows · Prozesse/Tasks   |   VB-Versionen: VB.NET05.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 OtterBewertung:  Views:  41.707 
www.tools4vb.deSystem:  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)



Anzeige

Kauftipp Unser Dauerbrenner!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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


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.