Programme in Excel prüfen: So funktioniert's
Schritt-für-Schritt-Anleitung
Um zu überprüfen, ob ein Programm läuft, kannst du VBA (Visual Basic for Applications) in Excel nutzen. Hier ist eine einfache Anleitung, um festzustellen, ob ein bestimmter Prozess aktiv ist:
- Öffne die Excel-Datei und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu:
- Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.
- Kopiere den folgenden Code in das Modul:
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Const TH32CS_SNAPPROCESS = &H2
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 260
End Type
Private Function IsProcessRunning(ByVal processName As String) As Boolean
Dim hSnapshot As Long
Dim process As PROCESSENTRY32
Dim result As Long
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If hSnapshot <> -1 Then
process.dwSize = Len(process)
result = Process32First(hSnapshot, process)
Do While result <> 0
If InStr(1, LCase$(process.szExeFile), LCase$(processName)) > 0 Then
IsProcessRunning = True
CloseHandle hSnapshot
Exit Function
End If
result = Process32Next(hSnapshot, process)
Loop
End If
CloseHandle hSnapshot
IsProcessRunning = False
End Function
Sub TestProcess()
If Not IsProcessRunning("hlp.exe") Then
MsgBox "hlp.exe läuft nicht"
Else
MsgBox "hlp.exe läuft"
End If
End Sub
- Führe das Makro aus:
- Drücke
F5
im VBA-Editor, um das Makro TestProcess
auszuführen.
Das Makro prüft, ob hlp.exe
läuft und zeigt eine entsprechende Nachricht an.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du mit Windows NT arbeitest und die obigen Methoden nicht funktionieren, kannst du WMI verwenden:
- Füge diesen Code in ein neues Modul ein:
Sub CheckProcessWMI()
Dim objWMI As Object
Dim colPro As Object
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set colPro = objWMI.ExecQuery("Select * from Win32_Process Where Name = 'hlp.exe'")
If colPro.Count = 0 Then
MsgBox "hlp.exe läuft nicht"
Else
MsgBox "hlp.exe läuft"
End If
End Sub
- Führe das Makro
CheckProcessWMI
aus.
Praktische Beispiele
- Beispiel 1: Überprüfen eines Internet Explorer Fensters
Du kannst auch überprüfen, ob ein Internet Explorer Fenster mit einem bestimmten Titel geöffnet ist. Hier ist ein Beispiel:
Private Function IsIEWindowOpen(ByVal windowTitle As String) As Boolean
' Implementierung ähnlich wie oben, aber mit FindWindow-Funktion
' ...
End Function
- Beispiel 2: Anpassung des Codes für andere Prozesse
Ändere einfach den Prozessnamen in der Funktion IsProcessRunning
, um andere Programme zu überwachen.
Tipps für Profis
- Verwende die Windows API: Die Nutzung von Windows API kann die Effizienz deines Codes erheblich steigern.
- Teste auf verschiedenen Betriebssystemen: Achte darauf, dass dein Code unter verschiedenen Windows-Versionen (z.B. XP, 7, 10) funktioniert.
- Fehlerbehandlung einbauen: Implementiere Fehlerbehandlung, um mögliche Laufzeitfehler zu vermeiden und den Code robuster zu gestalten.
FAQ: Häufige Fragen
1. Frage
Kann ich auch andere Programme überprüfen, nicht nur hlp.exe
?
Antwort: Ja, du kannst den Namen des Programms in der Funktion ändern, um jedes beliebige Programm zu überprüfen.
2. Frage
Warum funktioniert der Code nicht unter Windows NT?
Antwort: Der Code verwendet Funktionen, die in neueren Windows-Versionen verfügbar sind. Für Windows NT solltest du alternative Methoden wie WMI verwenden.