python win32gui finding child windows
14,386
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()
Author by
nabizan
Updated on June 07, 2022Comments
-
nabizan almost 2 years
for example at first you have to find hwnd of skype
hwnd = win32gui.FindWindow(None, 'skype')
and than all his child windows and their titles
child = ???
any idea?
-
nabizan almost 14 yearsim a little bit confused here ... when i turn on an aplication it returns main hwnd and tree childs despite the fact there are no child windows and when the application isnt running it prints far too many results when there shouldnt be any btw is there a way to determinate whitch window is running under whitch process?