Frage

zum Beispiel zunächst haben Sie Hwnd von skype

finden
hwnd = win32gui.FindWindow(None, 'skype')

und als alle seine Kinder Fenster und deren Titel

child = ???

irgendeine Idee?

War es hilfreich?

Lösung

Dieser Code zeigt hwnd von EditPlus Kind Fenster, die WindowsText von einiger Länge hat:

Bearbeiten

Du musst hwnd Ihre Anwendung finden, und dann verwenden Sie diesen Griff mit EnumChildWindows. Ich verlängerte Beispielcode mit ihm. Sobald Sie Anwendung hwnd bekommen können Sie nur die Fenster aufzuzählen. Wenn Sie 0 als hwnd zu EnumChildWindows geben Sie Griffe aller runing Fenster bekommen. Fügen Sie einige Abzüge zu meinem Code und überprüfen Sie es!

Erweiterte Code:

import win32gui

MAIN_HWND = 0

def is_win_ok(hwnd, starttext):
    s = win32gui.GetWindowText(hwnd)
    if s.startswith(starttext):
            print s
            global MAIN_HWND
            MAIN_HWND = hwnd
            return None
    return 1


def find_main_window(starttxt):
    global MAIN_HWND
    win32gui.EnumChildWindows(0, is_win_ok, starttxt)
    return MAIN_HWND


def winfun(hwnd, lparam):
    s = win32gui.GetWindowText(hwnd)
    if len(s) > 3:
        print("winfun, child_hwnd: %d   txt: %s" % (hwnd, s))
    return 1

def main():
    main_app = 'EditPlus'
    hwnd = win32gui.FindWindow(None, main_app)
    print hwnd
    if hwnd < 1:
        hwnd = find_main_window(main_app)
    print hwnd
    if hwnd:
        win32gui.EnumChildWindows(hwnd, winfun, None)

main()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top