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

How to retrieve window handler of context menu in python

我需要为 Windows 桌面应用程序自动化检索上下文菜单的 window 处理程序。我使用 win32gui 模块找到 window 处理程序,但它似乎不适用于上下文菜单。

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

我确实使用这些功能作为解决方法。第一个根据标题检索 window 句柄,第二个根据 class 名称检索句柄。第二种方法可用于查找上下文菜单。此 class 也可与 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'))