IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    独立文件SPY++获取Windows窗口的标题和类名(附赠Python获得窗口信息方法)

    52txr发表于 2024-05-08 20:55:00
    love 0

    最近在开发一个软件,要对外界软件进行嵌套。既然要get到打开的窗口,就要得到窗口的句柄以及类名等信息进行锁定。Spy++就是一个 窗口、消息查看分析利器。但是一般都是从Visual Studio套件中打开。我懒得安装那个笨重的东西了,好在有独立版本,很轻很爽。

    spy++

    Spy++是一种开发工具,用于在Windows操作系统上检查和调试应用程序的窗口消息、消息队列、线程和窗口层次结构。它可以帮助开发人员查看和监视Windows程序的内部运行情况,例如窗口的属性、消息传递流程和线程信息等。Spy++是微软Visual Studio套件的一部分,提供了强大的窗口调试和分析功能。

    现在有一个独立文件版本。特此分享,也是一种备份吧。

    spy++独立版 - 蓝奏云网盘下载

    spy++

    点击spyxx.exe后,就可以去找自己想要操作的软件了。例如我打开Design X软件:

    窗口的标题、句柄

    窗口的类名

    Python获得

    win32gui库也可以获得。但是没有spy++详细和专业。可以凑活着使用:

    import win32gui
    
    class WindowEnumerator:
        def __init__(self):
            self.myhwnd = win32gui.GetForegroundWindow()  # 获取当前窗口的句柄
            self.windowList = []
    
        def enum_windows(self):
            win32gui.EnumWindows(self._enum_windows_callback, None)
    
        def _enum_windows_callback(self, hwnd, _):
            """遍历回调函数"""
            if hwnd == self.myhwnd:
                return  # 防止自己嵌入自己
            if win32gui.IsWindow(hwnd) and win32gui.IsWindowVisible(hwnd) and win32gui.IsWindowEnabled(hwnd):
                phwnd = win32gui.GetParent(hwnd)
                title = win32gui.GetWindowText(hwnd)
                name = win32gui.GetClassName(hwnd)
                window_info = {'HWND': hwnd, 'PHWND': phwnd, 'Title': title, 'Name': name}
                self.windowList.append(window_info)
                print("HWND:", hwnd, " PHWND:", phwnd, " Title:", title, " Name:", name)
    
    def main():
        enumerator = WindowEnumerator()
        enumerator.enum_windows()
    
    if __name__ == "__main__":
        main()

    运行效果如下:

    程序结果



沪ICP备19023445号-2号
友情链接