offene fenster unter XP?

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
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Hallo,
Gibt es eigentlich eine Möglichkeit rauszufinden welche Fenster grad auf dem desktop offen sind, unter win XP? (ich bräcuhte am besten eine Liste mit den titeln der fenster...)

Danke,
jo
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Ist über ctypes/user32 möglich. Evtl finde ich morgen im Büro noch ein Stück Code welches das macht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Schau mal in sleepplayer.py in die Klasse ``PlayerController``. Dort wird ``win32gui.EnumWindows`` verwendet um in ``_enum`` die hWnd und die PID eines bestimmten Fensters zu bekommen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Code: Alles auswählen

import ctypes
hwnd = None
while True:
		hwnd = ctypes.windll.user32.FindWindowExA(None, hwnd, None, None)
		if hwnd == 0:
				break
		else:
				val = u"\0" * 1024
				ctypes.windll.user32.GetWindowTextW(hwnd, val, len(val))
				val = val.replace(u"\000", u"")
				if val:
						print repr(val)
Habe es nimmer gefunden, aber schnell gebastelt. Ich frage mich gerade was schlimmer ist Win32 oder X11 :roll:
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Naja, C-APIs "direkt" über ctypes anzusprechen ist zwar schnell, kann aber halt nicht pythonisch sein.
Strings kannst du dort nun mal nicht anders zurückgeben.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Hm, nachdem es ctypes anscheinend nicht für py 2.5 gibt hab ich mir mal pythonwin angeguckt - aber ich finde einfach keine dokumentation dazu, hat da zufällig einer eine, oder einen Link??

Aber schonmal danke für die Tips! :)

Gruss,
Jo
BlackJack

`ctypes` ist bei Python 2.5 in der *Standardbibliothek*!
Tython
User
Beiträge: 4
Registriert: Mittwoch 25. Juli 2007, 18:02

Ich möchte, nachdem ich ein bestimmtes Fenster gefunden habe (eine Dialog Box), diese bearbeiten, d.h. ich würde gerne Einstellungen an diesem Dialog Feld vornehmen. Zum Beispiel eine Check-Box aktivieren, den Fokus auf einen anderen Button setzen um die Box mit diesem Button zu beenden. Also einen kleinen Dialog modifizieren und sofort wieder beenden, so dass der User möglichst wenig davon mitbekommt.

Schon mal danke im vorraus.... ;-)
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Mh, liest sich ein bisschen wie eine Bestellung ;)

Aber auch hier nützt ctypes....

Code: Alles auswählen

In [8]: import ctypes

In [9]: ctypes.windll.user32.SetCursorPos(100, 100)
it's magic ;)

PS: Willkommen im Forum !
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Oh, hehe, peinlich, in der Standardbibliothek...

Naja, danke für den Hinweis. Danke auch für die Bestellung von Tython, das wäre nämlich direkt auch meine nächste Frage gewesen... :)

Gruss,
Jo
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

jo_hb hat geschrieben:Naja, danke für den Hinweis. Danke auch für die Bestellung von Tython, das wäre nämlich direkt auch meine nächste Frage gewesen... :)
Bestellung? Dann rück mal raus mit deiner Adresse für die Rechnung! :twisted:
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Also ich hab dieses böse Wort nur wegen...
Zap hat geschrieben:Mh, liest sich ein bisschen wie eine Bestellung :wink:
...benutzt. Würde nie auf die Idee kommen meine Fragen hier als Bestellung zu verstehen und danke dir nochmal für deine sehr hilfreichen tips! :)

Gruss,
Jo
jo_hb
User
Beiträge: 72
Registriert: Donnerstag 26. April 2007, 09:21

Ich glaube ich brauche nochmal Hilfe in dieser Sache: Die Liste, die ich mit dem Script von weiter oben bekomme ist ja endlos lang - wie finde ich denn raus, welche davon wirkliche 'Fenster' sind?

Das Fenster dass ich nämlich suche gibt es auf meinem Bildschirm nur einmal, in der Liste taucht der Name / text des Fensters aber 14 mal auf. Von dem auf meinem Schirm müsste ich dann wissen WO auf dem Bildschirm es sich befindet, und wie gross es ist. Hab mich jetzt schon eine ganze Weile damit beschäftigt aber ich kriegs nicht hin, veers, du scheinst da ja ziemlich fit zu sein, wär's machbar dass du dein Beispiel von unten um diese Funktionen erweiterst?
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

jo_hb hat geschrieben:Ich glaube ich brauche nochmal Hilfe in dieser Sache: Die Liste, die ich mit dem Script von weiter oben bekomme ist ja endlos lang - wie finde ich denn raus, welche davon wirkliche 'Fenster' sind?

Das Fenster dass ich nämlich suche gibt es auf meinem Bildschirm nur einmal, in der Liste taucht der Name / text des Fensters aber 14 mal auf. Von dem auf meinem Schirm müsste ich dann wissen WO auf dem Bildschirm es sich befindet, und wie gross es ist. Hab mich jetzt schon eine ganze Weile damit beschäftigt aber ich kriegs nicht hin, veers, du scheinst da ja ziemlich fit zu sein, wär's machbar dass du dein Beispiel von unten um diese Funktionen erweiterst?
Das liegt einfach daran, das vieles was du siehst nicht nur *ein* fenster ist.
Viele Anwendungsfenster bestehen aus einer unmenge von subfenstern.

Auserdem würde ich für sowas eh pywinauto empfehlen.
Tython
User
Beiträge: 4
Registriert: Mittwoch 25. Juli 2007, 18:02

moin moin,

hab da mal noch ne Frage. Und zwar verwende ich zur Bearbeitung eines Dialoges Watsup und pywinauto, das klappt auch völlig reibungslos, jedoch ist es mit beiden Modulen nicht möglich, eine Check-Box zu setzen.

Also entweder ich hab da etwas übersehen oder das ist einfach hier nicht mit drin, hat da jemand nen schlauen Tipp für mich?

Danke
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Möglicherweise findet sich die Antwort hier: Suchergebnis in der Mailingliste.
Tython
User
Beiträge: 4
Registriert: Mittwoch 25. Juli 2007, 18:02

Ok, thanx....
Funktioniert super :D
Antworten