Hallo Menschen,
ich brauche das Wissen, um innerhalb eines Python Programmes eine bestimmte Anwendung zu "töten"/schließen.
Danke schon Mal im voraus!
Mit Python andere Tasks töten
- noisefloor
- User
- Beiträge: 4183
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
was ist "eine andere Anwendung"? Ein anderer Prozess, der außerhalb deines Python-Skripts gestartet wurde?
Und auf welchem OS willst du das machen? Das ist in diesem Fall relevant.
Gruß, noisefloor
was ist "eine andere Anwendung"? Ein anderer Prozess, der außerhalb deines Python-Skripts gestartet wurde?
Und auf welchem OS willst du das machen? Das ist in diesem Fall relevant.
Gruß, noisefloor
In diesem Fall ist damit die Anwendung Microsoft Excel 2016 auf dem OS Windows 10 64 bit gemeint. Der Prozess wird durch meinen Python-Skript gestartet, Informationen werden abgerufen und nun soll der Prozess anschließend gestoppt werden.noisefloor hat geschrieben: Dienstag 10. Dezember 2019, 19:40 Hallo,
was ist "eine andere Anwendung"? Ein anderer Prozess, der außerhalb deines Python-Skripts gestartet wurde?
Und auf welchem OS willst du das machen? Das ist in diesem Fall relevant.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 14013
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Call: Wenn Du das mit `subprocess.Popen()` startest, hat der Rückgabewert ja eine `terminate()`-Methode mit der man den Prozess den man da gestartet hat, auch wieder beenden kann.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
excel = wincl.Dispatch("Excel.Application")__deets__ hat geschrieben: Dienstag 10. Dezember 2019, 20:21 Das subprocess Modul das du verwenden solltest gibt dir ein Objekt zurück, auf dem du terminate aufrufen kannst.
excel.Workbooks.Open(Filename=filename)
excel.Application.Run("PERSONAL.XLSB!Makro2")
excel.Application.Quit()
So starte ich derzeit und verarbeite ich
psutil soltle das können was du suchst:
Code: Alles auswählen
for pid in psutil.pids():
p = psutil.Process(pid)
if p.name() == 'programm_name':
p.kill()
- __blackjack__
- User
- Beiträge: 14013
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Call: Das `Quit()` sollte die Anwendung doch bereits verlassen‽
@Squipy: Also erstmal ist `kill()` ziemlich brutal und sollte nur verwendet werden wenn `terminate()` nicht zum gewünschten Ergebnis führt. Und dann ist es normalerweise nicht nötig alle PIDs abzuklappern wenn man den Prozess selbst gestartet hat. Und statt die `pids()` abzufragen und dann selbst jede in `Process` zu verpacken würde ich `psutil.process_iter()` verwenden.
@Squipy: Also erstmal ist `kill()` ziemlich brutal und sollte nur verwendet werden wenn `terminate()` nicht zum gewünschten Ergebnis führt. Und dann ist es normalerweise nicht nötig alle PIDs abzuklappern wenn man den Prozess selbst gestartet hat. Und statt die `pids()` abzufragen und dann selbst jede in `Process` zu verpacken würde ich `psutil.process_iter()` verwenden.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Quit versucht leider nur es zu verlassen. Aber tatsächlich kommt dann eine Meldung, ob man denn die Datei speichern möchte. In meinem Fall wäre das sogar ziemlich egal. Also wenn jemand weiß, wie man auf speichern drücken kann, würde das auch helfen.__blackjack__ hat geschrieben: Dienstag 10. Dezember 2019, 22:10 @Call: Das `Quit()` sollte die Anwendung doch bereits verlassen‽
@Squipy: Also erstmal ist `kill()` ziemlich brutal und sollte nur verwendet werden wenn `terminate()` nicht zum gewünschten Ergebnis führt. Und dann ist es normalerweise nicht nötig alle PIDs abzuklappern wenn man den Prozess selbst gestartet hat. Und statt die `pids()` abzufragen und dann selbst jede in `Process` zu verpacken würde ich `psutil.process_iter()` verwenden.
Hast Du denn schon die Dokumentation gelesen?
https://docs.microsoft.com/de-de/office ... ation.quit
https://docs.microsoft.com/de-de/office ... ation.quit