Hallo,
habe nach längerer Zeit mal wieder Gelegenheit mich mit meinem Python-Projekt zu beschäftigen und gleich eine Frage, zu der ich keine richtige Antwort finde, ich hoffe ihr könnt mir helfen - sollte eigentlich ganz einfach sein:
Ich möchte eine Liste aller aktuell auf dem XP-desktop geöffneten Fenster, sowie die genaue Position und Grösse dieser Fenster.
Also zB falls ich eine Dos-box geöffnet habe und deren Fenster maximiert ist soll die Liste etwa so ausehen:
[["shell",(0,0),(1024,768)], [...], [...]]
Das genaue Format ist natürlich eher nebensächlich, hauptsache die Daten stimmen...
Achja, und wenn ich mich recht erinnere hatte ich vor ein paar Monaten schon irgendeinen Ansatz dazu, allerdings weiss ich nicht mehr genau wie - und das Problem damals war dass die Liste viel zu viele Informationen enthielt, weil irgendwie nicht die wirklich sichtbaren Fenster abgefragt wurden sondern die Prozesse, oder so... Ich brauche aber wirklich nur und ausschliesslich die Fenster.
Riesendank schonmal,
und Gruss,
Jo
Liste der geöffneten Fenster
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Jo!jo_hb hat geschrieben:Ich brauche aber wirklich nur und ausschliesslich die Fenster.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import win32gui
from pprint import pprint
windows = {}
def add_window(handle, windows):
if win32gui.IsWindowVisible(handle):
windows[handle] = {
"WindowText": win32gui.GetWindowText(handle),
#"WindowRect": win32gui.GetWindowRect(handle),
#"DeviceContext": win32gui.GetDC(handle),
}
win32gui.EnumWindows(add_window, windows)
pprint(windows)
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
So, das macht jetzt schonmal genau was ich will - bin mir nur nicht sicher ob das vielleicht ein bisschen umständlich ist...
Code: Alles auswählen
def window_pos():
windows = []
Title = []
def get_windows(handle, windows):
if win32gui.IsWindowVisible(handle):
if win32gui.GetWindowText(handle).count("shell"):
windows.append(win32gui.GetWindowRect(handle))
Title.append(win32gui.GetWindowText(handle))
win32gui.EnumWindows(get_windows, windows)
if len(windows) > 1:
print "Bitte nur ein Fenster!"
return []
elif len (windows) == 0:
print "Kein Fenster gefunden."
return []
else:
return [windows[0], Title[0]]
wp = window_pos()
if wp:
print "Alles klar, Fenster:", wp[1]
else:
print "Ende."