Seite 1 von 1
Fenster erkennen und wegklicken
Verfasst: Montag 19. Juli 2021, 14:33
von Ollom
Hallo,
ich möchte mit meinem Programm gern erkennen ob ein bestimmtes Fenster (FehlermeldungXY) aufgegangen ist und dieses dann über den OK Butten schließen.
Ich dachte an eine Schleife, die dauerhaft prüft ob ein bestimmter Fenstername/ Prozess in Windows auftaucht. Wenn dieses Fenster gefunden wurde soll dorthin gewechselt werden und meinetwegen mit dem TAB so lange die Kästchen weitergeschaltet werden bis der OK Button kommt und diesen dann betätigen. Die Anzahl der Tab Betätigungen würde ich vorher abzählen.
Mit welchem Package kann man soetwas programmieren?
Bei meinen bisherigen Suche kam ich leider immer nur zu tkinter und Co, wo man selber GUIs erstellen kann aber nicht bestehende steuern kann.
Hättet ihr eine Idee

für mich?
Re: Fenster erkennen und wegklicken
Verfasst: Montag 19. Juli 2021, 14:46
von Sirius3
Re: Fenster erkennen und wegklicken
Verfasst: Dienstag 20. Juli 2021, 06:31
von Ollom
Genau so etwas habe ich gesucht. Vielen Dank!!!
Re: Fenster erkennen und wegklicken
Verfasst: Dienstag 20. Juli 2021, 06:53
von Ollom
Alles geht mit dem PyAutoGUI leider nicht. Für das Schließen von Fenstern braucht man noch das OS Package.. Nur falls das hier noch mal jemand liest....
Re: Fenster erkennen und wegklicken
Verfasst: Dienstag 14. Dezember 2021, 12:22
von Ollom
Hallo
Ich hatte das Thema lange beiseite gelegt, da ich nicht weiter kam und wollte es jetzt erneut angehen.
Ich kann mittlerweile aktive *.exe Files im Taskmanager finden.
Code: Alles auswählen
import psutil
for p in psutil.process_iter(attrs=['pid', 'name']):
if "notepad++.exe" in (p.info['name']).lower():
print("Habe ich gefunden", (p.info['name']).lower())
Das hilft mir aber immer noch nicht das "SpeichernUnter" Dialogfenster vom Notepad zu finden. Hat jemand eine Idee oder kann ein Minibeispiel einstellen, wie man solche Fenster findet und diese abbricht oder schließt.
Re: Fenster erkennen und wegklicken
Verfasst: Dienstag 14. Dezember 2021, 13:12
von sparrow
Vielleicht möchtest du dir einmal pywinauto anschauen.
Re: Fenster erkennen und wegklicken
Verfasst: Freitag 7. Januar 2022, 11:32
von Ollom
Ok, ich habe mich jetzt eine Weile mit pywinauto befasst und wollte für alle die auf das gleiche Problem stoßen hier mal eine Lösung zeigen.
Als Versuchsobjekt habe ich das Notepad geöffnet und den Dialog "Speichern unter" offen.
Wenn ich den folgenden Code in der Console ausführe erhalte ich die Unterpunkte vom Notepad.
Code: Alles auswählen
from pywinauto.application import Application
app = Application().connect(path=r"C:\Windows\System32\notepad.exe")
# Anzeige der Unterpunkte vom Notepad
dialogs = app.windows()
print(dialogs)
# Anzeige der Bedienelemente von Speichern unter
SaveAsWindow = app[u'Speichern unter']
SaveAsWindow.print_control_identifiers()
Mit dem Befehl
finde ich auch den Abbrechen Button im Rückgabewert
Code: Alles auswählen
...
| child_window(title="&Speichern", class_name="Button")
|
| Button - 'Abbrechen' (L2964, T741, R3052, B767)
| ['AbbrechenButton', 'Abbrechen', 'Button3']
| child_window(title="Abbrechen", class_name="Button")
|
| ScrollBar - '' (L3052, T762, R3069, B779)
| ['AbbrechenScrollBar', 'ScrollBar3']
| child_window(class_name="ScrollBar")
|
| Static - '' (L2242, T227, R2758, B244)
| ['Speichern unterStatic', 'Static3', 'Speichern unterStatic0', 'Speichern unterStatic1']
| child_window(class_name="Static")
...
Da man diese Informationen nun hat kann man mit dem Befehl
ganz einfach das Fenster abbrechen.

Diese Erkenntniss hat mich nur 2 Tage gekostet

Re: Fenster erkennen und wegklicken
Verfasst: Freitag 7. Januar 2022, 13:40
von __blackjack__
@Ollom: Du verwendet da aber nicht mehr Python 2 oder? Die u vor den Zeichenketten sollten da nicht stehen, insbesondere sollte Python die nie *ausgeben*, denn dann ist es Python 2.
Re: Fenster erkennen und wegklicken
Verfasst: Freitag 7. Januar 2022, 14:37
von Ollom
Nein ich verwende kein Python 2 und du hast recht, es funktioniert auch wunderbar ohne das u
