首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python win32gui查找子窗口

python win32gui查找子窗口
EN

Stack Overflow用户
提问于 2010-06-01 18:30:48
回答 1查看 14K关注 0票数 2

例如,首先你必须找到skype的hwnd。

代码语言:javascript
复制
hwnd = win32gui.FindWindow(None, 'skype')

以及他所有的子窗口及其标题

代码语言:javascript
复制
child = ???

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-01 19:01:21

这段代码显示了EditPlus子窗口的hwnd,它具有一定长度的WindowsText

编辑

你必须找到你的应用程序的hwnd,然后在EnumChildWindows中使用这个句柄。我用它扩展了示例代码。一旦你得到了应用程序hwnd,你就可以只枚举它的窗口。当您将0作为hwnd赋给EnumChildWindows时,您将获得所有运行窗口的句柄。在我的代码中添加一些指纹,然后检查它!

扩展代码:

代码语言:javascript
复制
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()
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2948964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档