Ich versuche ein Programm zu schreiben, das ein Fenster findet, indem ich nach seinem Titel suche. Sobald es das Fenster gefunden hat, wird es versuchen, es nach vorne zu bringen. Ich verwende win32gui
API, um dies zu erreichen. Ich kann es größtenteils zum Laufen bringen, aber aus irgendeinem Grund funktioniert es nicht, wenn der Taskmanager vorne ist. Ich habe den folgenden Beispielcode.
Ich habe das aus mehreren Onlinequellen zusammengestellt. Es scheint größtenteils zu funktionieren, aber für einige Fenster wie den Task-Manager wird es manchmal funktionieren, aber den Rest versagt. Wenn es nicht richtig funktioniert, merke ich nur, dass das Anwendungssymbol gelb blinkt. Gibt es eine geeignete Methode, um sicherzustellen, dass das Fenster, an dem ich interessiert bin, zu 100% im Vordergrund steht? Ich bin mir nicht sicher, ob dies relevant ist, aber ich verwende Windows 7 Professional (32-Bit) mit Service Pack 1.
Ich habe eine Lösung gefunden: Wenn Taskmanager, dann töte es. Ich habe eine Methode zu cWindow
hinzugefügt:
Rufen Sie diese Methode direkt nach cW = cWindow()
auf.
Eine weitere Fehlermöglichkeit besteht darin, diese Ausnahme in SetAsForegroundWindow
zu verhindern:
Senden Sie einfach eine Alt-Taste vor dem win32gui-Aufruf:
%Vor% Zuletzt, wenn ich darf, vergleiche != None
aber is not None
nicht. Mehr Python;)
Dies ist der vollständige Code:
%Vor%Quellen: Wie schließe ich Fenster mit handle mit win32gui in Python und win32gui .SetActiveWindow () FEHLER: Die angegebene Prozedur konnte nicht gefunden werden .
Hinweis: Das folgende befasst sich nur damit, dass immer geöffnete Fenster wie Task-Manager ausgeblendet werden, bevor das Fenster aktiviert wird. - setzt voraus, dass der Aktivierungsteil selbst einwandfrei funktioniert , was nicht der Fall sein kann. Die Bedingungen, unter denen ein Prozess die SetForegroundWindow
Windows-API-Funktion aufrufen darf, sind hier .
Task-Manager ist in zweierlei Hinsicht besonders:
Options > Always on Top
nicht aktiviert ), können Sie immer noch auf anderen Immer-Ein anzeigen lassen Fenster (etwas, was gewöhnliche Fenster scheinbar nicht können). Ihr Code:
Es ist zwar eine Option, das Vorhandensein des Task-Manager-Fensters zu überprüfen und es zu minimieren, aber beachten Sie, dass andere immer-auf-dem-Fenster vorhanden sein können, also für eine robuste Lösung müssen alle offenen Immer-auf-dem-Fenster identifizieren und minimieren :
Bei dem folgenden Versuch wird versucht, alle immer im Vordergrund stehenden Fenster mit Ausnahme der Taskleiste und der Startschaltfläche zu identifizieren, und minimiert solche Fenster (verbirgt sie effektiv).
Die neuen Methoden sind hide_always_on_top_windows
und _window_enum_callback_hide
.
Tags und Links python windows win32gui setforegroundwindow