Question

par exemple tout d'abord vous devez trouver hwnd de skype

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

et que toutes ses fenêtres enfants et leurs titres

child = ???

une idée?

Était-ce utile?

La solution

Ce code montre hwnd des fenêtres enfants editplus qui a WindowsText d'une certaine longueur:

EDIT

Vous devrez trouver hwnd de votre application, puis utiliser cette poignée avec EnumChildWindows. Je tendis exemple de code avec elle. Une fois que vous obtenez hwnd d'application, vous pouvez énumérer seulement ses fenêtres. Lorsque vous donnez 0 comme hwnd à EnumChildWindows vous obtiendrez des poignées de toutes les fenêtres runing. Ajouter des tirages à mon code et vérifier!

Code étendue:

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top