Checken ob IE läuft

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mrniceguy
User
Beiträge: 2
Registriert: Freitag 12. September 2014, 11:32

Halli Hallo,

ich würde gern mit einem Skript überprüfen, ob der IE läuft. Muss ich die Prozesse checken ? Wenn ja wie ? Oder gibts eine andere Lösung.

Vielen Dank im voraus !
BlackJack

@mrniceguy: Mit dem `psutil`-Modul könnte man das so machen: ``any(p.name() == 'iexplore' for p in psutil.process_iter())``

Wozu brauchst Du das denn?
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Vermutlich um anschließend den IE abzuschießen.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

In dem Fall (ungetestet):

Code: Alles auswählen

    for process in psutil.process_iter():
        if process.name() == 'iexplore':
            process.terminate()
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

darktrym hat geschrieben:Vermutlich um anschließend den IE abzuschießen.
Das klingt grundsätzlich wie eine gute Idee. :mrgreen:
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Bild

:(
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@darktrym: Dann müsste man halt die Ausnahme behandeln um die Prozesse für die man nicht genug Rechte besitzt zu ignorieren. Prozesse von denen man nicht einmal den Namen abfragen darf, kann man ziemlich sicher auch nicht beenden. ;-)
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Wie du am Fenstertitel sehen kannst, war ich Admin.
Folgender Code geht im Übrigen, schnell aus der Doku zusammengebastelt:

Code: Alles auswählen

import psutil

for proc in psutil.process_iter():
    try:
        pinfo = proc.as_dict(attrs=['pid', 'name'])
    except psutil.NoSuchProcess:
        pass
    else:
        if pinfo['name'] == u'iexplore.exe':
            p = psutil.Process(pinfo['pid'])
            p.terminate()
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

@darktrym: Hatte ich nicht gesehen, macht aber keinen Unterschied denn auch ein Administrator darf nicht alles solange er nicht die nötigen Rechte hat. Admin unter Windows ist von Haus aus nicht so ”mächtig” wie Root unter Unix.

Edit: Das sieht ein wenig umständlich aus denn mit `proc` hast Du das Prozess-Objekt ja schon wofür Du aus der PID aus dem Wörterbuch noch mal ein neues `Process`-Objekt erstellst.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Gut, eine Zeile weniger. Erklärt aber nicht das merkwürdige Verhalten vorallem weil name() gerade diese Exception auslöst. Als normaler User geht der gezeigte Code ja auch durch.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
mrniceguy
User
Beiträge: 2
Registriert: Freitag 12. September 2014, 11:32

Danke euch für die Antworten ich werds mal ausprobieren.
Sollte Privat für mich sein. Bin gerade dabei Python zu lernen und hab mir ne kleine Aufgabe zusammengebastelt an der ich arbeite wenn ich Zeit finde :)
Antworten