python win32gui finding child windows
for example at first you have to find hwnd of skype
hwnd = win32gui.FindWindow(开发者_JAVA百科None, 'skype')
and than all his child windows and their titles
child = ???
any idea?
This code shows hwnd
of EditPlus child windows that has WindowsText
of some length:
EDIT
You will have to find hwnd
of your application, and then use this handle with EnumChildWindows
. I extended example code with it. Once you get application hwnd
you can enumerate only its windows. When you give 0 as hwnd
to EnumChildWindows
you will get handles of all runing windows. Add some prints to my code and check it!
Extended 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()
精彩评论