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

2024-10-06 11:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要检索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)))

Tags: 模块importnone应用程序处理程序windowswith菜单
1条回答
网友
1楼 · 发布于 2024-10-06 11:27:33

我确实把这些功能当作解决办法。第一个基于标题检索窗口句柄,第二个根据类名检索句柄。第二种方法可以用来查找上下文菜单。这个类也可以和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'))

相关问题 更多 >