Prozess Beenden mit VBA (Excel)
Hallo zusammen
Drehe momentan am Rad, da ich nicht mehr weiter weiss. Erhoffe mir durch euch eine Lösung zu finden.
Mit folgendem Code kann ich erfolgreich "calc.exe" beenden:
Nun soll aber nicht "calc.exe" beendet werden, sondern der jeweilige Prozess der in der Variable steht.
Nachfolgend der Code:
Leider funktioniert das nicht.
An der Variable kann es irgendwie nicht liegen da "MsgBox AusgewaehlterProzess" den Namen vom Prozess ausgibt.
Ob hier jemand eine Lösung weiss?
Gruss
Markus
Drehe momentan am Rad, da ich nicht mehr weiter weiss. Erhoffe mir durch euch eine Lösung zu finden.
Mit folgendem Code kann ich erfolgreich "calc.exe" beenden:
Private Sub cmdTaskBeenden_Click()
Set objWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set ProcessList = objWindowsService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'calc.exe'")
For Each objProcess In ProcessList
objProcess.Terminate 'Prozess beenden
Next objProcess
End Sub
Nun soll aber nicht "calc.exe" beendet werden, sondern der jeweilige Prozess der in der Variable steht.
Nachfolgend der Code:
Private Sub cmdTaskBeenden_Click()
AusgewaehlterProzess = ListBox1.Value
Set objWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set ProcessList = objWindowsService.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'AusgewaehlterProzess'")
For Each objProcess In ProcessList
objProcess.Terminate 'Prozess beenden
Next objProcess
End Sub
Leider funktioniert das nicht.
An der Variable kann es irgendwie nicht liegen da "MsgBox AusgewaehlterProzess" den Namen vom Prozess ausgibt.
Ob hier jemand eine Lösung weiss?
Gruss
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 260220
Url: https://administrator.de/contentid/260220
Ausgedruckt am: 15.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Markus,
du hast die Variable nicht korrekt in die WQL Query eingebaut. Bei deiner Version wird der Variablenname als String selbst interpretiert und nicht der Inhalt der Variablen eingesetzt. Um das zu erreichen musst du das Konstrukt so schreiben (nur Zeile 4 wurde angepasst).
Grüße Uwe
du hast die Variable nicht korrekt in die WQL Query eingebaut. Bei deiner Version wird der Variablenname als String selbst interpretiert und nicht der Inhalt der Variablen eingesetzt. Um das zu erreichen musst du das Konstrukt so schreiben (nur Zeile 4 wurde angepasst).
Private Sub cmdTaskBeenden_Click()
AusgewaehlterProzess = ListBox1.Value
Set objWindowsService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set ProcessList = objWindowsService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & AusgewaehlterProzess & "'")
For Each objProcess In ProcessList
objProcess.Terminate 'Prozess beenden
Next objProcess
End Sub