如何在python中检索上下文菜单的窗口处理程序

时间:2018-10-16 17:04:15

标签: python automation win32gui

我需要为Windows桌面应用程序自动化检索上下文菜单的窗口处理程序。我使用win32gui模块查找窗口处理程序,但似乎无法与上下文菜单一起使用。

import win32gui

# works fine with normal window
print(hex(win32gui.FindWindow("Micro", None)))
# does not work with context menu
print(hex(win32gui.FindWindow("Context", None)))

1 个答案:

答案 0 :(得分:0)

我确实使用这些功能来解决。冷杉根据标题检索窗口句柄,第二个通过类名称检索句柄。第二种方法可用于查找上下文菜单。此类也可以与Robot框架一起使用。

import win32gui


class AppTopLevelWindowFinder:
    def find_window_handler_by_title(self, name):
        windows = []
        win32gui.EnumWindows(enumHandler, windows)
        for next_window in windows:
            if name in next_window[0]:
                return next_window[2]


    def find_window_handler_by_class(self, classname):
        windows = []
        win32gui.EnumWindows(enumHandler, windows)
        for next_window in windows:
            if classname in next_window[1]:
                return next_window[2]


def enumHandler(hwnd, lwindow):
    if win32gui.IsWindowVisible(hwnd):
        lwindow.append((win32gui.GetWindowText(hwnd), win32gui.GetClassName(hwnd), hex(hwnd)))


newobj = AppTopLevelWindowFinder()
print(newobj.find_window_handler_by_title('Incoming Call'))
print(newobj.find_window_handler_by_class('32768'))