我需要为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)))
答案 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'))