当前位置: 首页 > 面试题库 >

python win32gui查找子窗口

满自明
2023-03-14
问题内容

例如,首先您必须找到Skype的hwnd

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

而且比他所有的孩子窗口和标题

child = ???

任何想法?


问题答案:

此代码显示hwnd了具有WindowsText一定长度的EditPlus子窗口:

编辑

您将必须找到hwnd您的应用程序,然后将其与一起使用EnumChildWindows。我用它扩展了示例代码。一旦获得应用程序,hwnd您就只能枚举其窗口。当您给0时hwndEnumChildWindows您将获得所有正在运行的窗口的句柄。将一些打印品添加到我的代码中并检查!

扩展代码:

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()


 类似资料:
  • 操纵子窗口 进程:渲染进程​ 使用 window.open 创建一个新窗口时,会自动创建一个 BrowserWindowProxy 的实例将返回一个标识,可通过标识对这个新窗口进行少量功能的控制. 实例方法 BrowserWindowProxy对象具有以下实例方法: win.blur() 用途:从子窗口中去焦 win.close() 用途:强制关闭子窗口,而不调用其卸载事件(unload even

  • 问题 你需要搜索一个字符串,并返回匹配的起始位置或匹配值本身。 解决方案 有几种使用正则表达式的方法来实现这个功能。其中一些方法被称为 RegExp 模式或对象还有一些方法被称为 String 对象。 RegExp 对象 第一种方式是在 RegExp 模式或对象中调用 test 方法。test 方法返回一个布尔值: match = /sample/.test("Sample text") # =>

  • 问题 你想在一条消息中查找某个关键字第一次或最后一次出现的位置。 解决方案 分别使用 JavaScript 的 indexOf() 和 lastIndexOf() 方法查找字符串第一次和最后一次出现的位置。语法: string.indexOf searchstring, start message = "This is a test string. This has a repeat or two

  • 我有两条流: 测量 WhoMeasured(关于谁进行了测量的元数据) 这些是它们的案例类: 流包含大量数据。流几乎没有任何可用性。事实上,对于<code>who_measured_id</code>流中的每个<code>who_。这本质上是一个哈希表,由流填充。 在我的自定义窗口函数中 这是我的工作。现在你可能会看到,有一些东西不见了:两个流的结合。 因此,从本质上讲,这是一种查找表,当流中的新

  • 回忆第七章的CHECKER程序。这些程序显示了矩形网格。当您在一个矩形中按下鼠标按键时,该程序就画一个x;如果您再按一次鼠标按键,那么x就消失。虽然这个程序的CHECKER1和CHECKER2版本只使用一个主窗口,但CHECKER3版本却为每个矩形使用一个子窗口。这些矩形由一个叫做ChildProc的独立窗口消息处理程序维护。 如果有必要,无论矩形是否被选中,都可以给ChildProc增加一种向其

  • 问题内容: 如果我有串,我要检查,如果它作为一个连续存在 串 中,我可以使用: 在非连续子 序列 的情况下,我可以使用什么?例: 问题答案: 我不知道是否有内置功能,但是手动操作相当简单

  • 给定一个整数数组,包含不超过两个不同值的最长子数组的长度是多少,使得非重复值的差异不超过 1? 例: 最大的子数组长度为4:[1,2,1,2]。 最大的子阵列具有长度4:[3,3,2,2]。值1和3相差1以上,因此[1,1,1,3,3]无效。

  • 我目前有一个代码片段,其中对于每个类别,它将找到子类别: 将递归获取一个类别的子级: 目前,使用,只检索子类别的子类别,因此如果每个子类别都有自己的子类别,则不会将其保存到子类别中。 我如何显示子子类别给我们的子类别? 我想用我的代码做的是获取一个父级,获取它的子级,然后将这些子级中的每一个视为父级,递归地获取它的子级,但是我的JSON输出并没有反映这一点。只有父对象有子对象-子对象没有子对象(尽