mal wieder ein Spickzettel. Diesmal geht es darum, zu prüfen, ob eine bestimmte .EXE (im Beipielcode ist's Word) läuft. Das ist noch relativ einfach, wenn man den Namen des Prozesses genau genug kennt.
Schwieriger wird es beim Thema Explorer, denn der läuft natürlich immer. Sonst gäb's ja keine hübschen Bilchen auf dem Desktop Hier muss man abfragen, ob ein Explorer-Fenster geöffnet ist. Als Rückmeldung erhält man mit der hier gezeigten Methode Explorer + Verzeichnis und weiß dadurch, welches Fenster geöffnet ist.
Die Ausgabe der Abfragen erfolgt in einer gemeinsamen MsgBox, der Code gehört in ein allgemeines Modul.
Code: Alles auswählen
Public Sub AppRunning()
Dim sApp As String, sExp As String, sMsgApp As String, sMsgExp As String
Dim oSrv As Object, oSet As Object, oPrc As Object, oShell As Object, oApp As Object
sApp = "WINWORD.EXE"
sExp = "EXPLORER.EXE"
Set oSrv = GetObject("winmgmts:\\.\root\CIMV2")
Set oSet = oSrv.ExecQuery("SELECT Name FROM Win32_Process", , 48)
Set oShell = CreateObject("Shell.Application")
sMsgApp = sApp & " is not running!"
For Each oPrc In oSet
If oPrc.Name Like sApp Then
sMsgApp = sApp & " is running!"
End If
Next
sMsgExp = "No Explorer Window!"
For Each oApp In oShell.Windows
If InStr(1, UCase(oApp.FullName), sExp) > 0 Then
sMsgExp = oApp.FullName & " " & oApp.Locationname
End If
Next
MsgBox sMsgApp & vbNewLine & vbNewLine & sMsgExp
Set oSet = Nothing
Set oSrv = Nothing
Set oApp = Nothing
Set oShell = Nothing
End Sub
Viel Spaß damit! und Grüße!