Ermitteln, ob .pptx bereits geöffnet ist
Verfasst: Sonntag 27. März 2022, 12:15
Hallo Python-Community,
ich habe ein Tool mit GUI erstellt und öffne per Button eine PowerPoint-Datei.
Nun möchte ich einfach ein PopUp öffnen, wenn die Datei bereits geöffnet ist. Klingt total simpel, ist es hoffentlich auch, aber irgendwie stehe ich auf dem Schlauch.
import subprocess
filepath = r'D:\test.pptx'
if subprocess.Popen(filepath, shell=True).poll() is None:
print('Popup öffnen')
In diesem Fall würde das PopUp immer erscheinen, da die if-Abfrage die Datei öffnet. Also auch bei der ersten Betätigung des Buttons. Dies könnte ich mit einer Bool-Variablen abfangen. Es könnte aber auch sein, dass die Datei über den Explorer geöffnet wurde. Und in diesem Fall soll das PopUp auch bei der ersten Buttonbetätigung erscheinen.
Das brachte mich auf Versuche über einen Prozess und ich bin auf wmi gestoßen.
import wmi
c = wmi.WMI()
for process in c.Win32_Process():
if process.Name == 'POWERPNT.EXE':
print(process)
Damit kann ich abfragen, ob PowerPoint läuft. Mir fehlt aber der 2te Schritt: welche Datei ist in Verwendung? Außerdem ist die Laufzeit recht hoch, da eben alle laufenden Prozesse durchsucht werden.
Eine Möglichkeit, die erstmal funktioniert, ist die Abfrage der temporären Datei:
from pathlib import Path
if Path(r'D:\~$test.pptx').is_file():
print('Popup öffnen')
Allerdings ist mir beim Durchstöbern von Verzeichnissen auf Servern schon oft aufgefallen, dass solche temporären Datein existieren, obwohl sie gar nicht geöffnet sind.
Das PopUp würde also fälschlicherweise geöffnet.
Wäre super, wenn mir da irgendjemand eine Lösung schildern kann. Etliche Google-Suchen bringen mich immer nur zu Themen mit f.open etc. Vielleicht fehlt mir auch einfach das richtige Schlüsselwort für eine erfolgreiche Suche. Irgendwie kann ich mir nicht vorstellen, dass ich mit dieser scheinbar einfachen Aufgabe der Erste bin
Danke vorab.
ich habe ein Tool mit GUI erstellt und öffne per Button eine PowerPoint-Datei.
Nun möchte ich einfach ein PopUp öffnen, wenn die Datei bereits geöffnet ist. Klingt total simpel, ist es hoffentlich auch, aber irgendwie stehe ich auf dem Schlauch.
import subprocess
filepath = r'D:\test.pptx'
if subprocess.Popen(filepath, shell=True).poll() is None:
print('Popup öffnen')
In diesem Fall würde das PopUp immer erscheinen, da die if-Abfrage die Datei öffnet. Also auch bei der ersten Betätigung des Buttons. Dies könnte ich mit einer Bool-Variablen abfangen. Es könnte aber auch sein, dass die Datei über den Explorer geöffnet wurde. Und in diesem Fall soll das PopUp auch bei der ersten Buttonbetätigung erscheinen.
Das brachte mich auf Versuche über einen Prozess und ich bin auf wmi gestoßen.
import wmi
c = wmi.WMI()
for process in c.Win32_Process():
if process.Name == 'POWERPNT.EXE':
print(process)
Damit kann ich abfragen, ob PowerPoint läuft. Mir fehlt aber der 2te Schritt: welche Datei ist in Verwendung? Außerdem ist die Laufzeit recht hoch, da eben alle laufenden Prozesse durchsucht werden.
Eine Möglichkeit, die erstmal funktioniert, ist die Abfrage der temporären Datei:
from pathlib import Path
if Path(r'D:\~$test.pptx').is_file():
print('Popup öffnen')
Allerdings ist mir beim Durchstöbern von Verzeichnissen auf Servern schon oft aufgefallen, dass solche temporären Datein existieren, obwohl sie gar nicht geöffnet sind.
Das PopUp würde also fälschlicherweise geöffnet.
Wäre super, wenn mir da irgendjemand eine Lösung schildern kann. Etliche Google-Suchen bringen mich immer nur zu Themen mit f.open etc. Vielleicht fehlt mir auch einfach das richtige Schlüsselwort für eine erfolgreiche Suche. Irgendwie kann ich mir nicht vorstellen, dass ich mit dieser scheinbar einfachen Aufgabe der Erste bin

Danke vorab.