如何使用Python和winapi模拟按钮单击?

时间:2015-07-22 06:19:19

标签: python winapi

我是winapi的新手,我有一个(专有)软件的窗口。任务是在其中找到按钮并从我的Python程序中“单击”它。这个解决方案很好,我能够获得目标窗口的HWND: python win32gui finding child windows

这个片段看起来也不错: Finding Handle of a control inside a window 但是按钮的标题是未知的,在我的情况下它只有一个图标和一个工具提示(“重新连接”)。

所以我需要知道如何找到所需的按钮元素并模拟点击它。

提前谢谢。

编辑。 最后我设法解决了这个问题(有点天真):

def reconnect(win_title):
    """
    This method accepts window's title,
    looks for the 'reconnect' button and
    'clicks' this button
    """
    # parent window
    hwnd = win32gui.FindWindow(0, win_title)

    # fetch all children windows' hwnds
    # store them in a list
    inplay_children = []

    def is_win_ok(hwnd, *args):
        s = win32gui.GetWindowText(hwnd)
        inplay_children.append(hwnd)

    win32gui.EnumChildWindows(hwnd, is_win_ok, None)

    # obtain hwnd of "reconnect button",
    # its index == -3 (I guessed that) 
    reconn_button_hwnd = inplay_children[-3]

    # bring window to foreground
    win32gui.SetForegroundWindow(hwnd)

    # send click to "reconnect button"
    win32api.PostMessage(reconn_button_hwnd, win32con.WM_LBUTTONDOWN, 0, 0)
    win32api.PostMessage(reconn_button_hwnd, win32con.WM_LBUTTONUP, 0, 0)

我希望这是有用的。

0 个答案:

没有答案