安装spy++
- 安装Visual Studio->单个组件->C++ 核心功能。
- 如果目标程序以管理员权限运行,则需要以管理员权限运行 Spy++,否则会看不到或无法附加某些窗口。
- 注意 32-bit vs 64-bit:用 64 位 Spy++ 查看 64 位程序,用 32 位 Spy++ 查看 32 位程序,避免看不到窗口或 HWND 不对应的问题。
启动 Spy++ 与界面概览
-
启动 Visual Studio ->
Tools->Spy++,或直接运行spyxx.exe/spyxx_amd64.exe。 -
主要窗口:
-
Window Finder(放大镜/Find Window):拖到目标窗体上来识别窗口。
-
Window Tree:显示系统中所有顶层窗口和子窗口的树状结构。
-
Messages:监控、捕获某个窗口的消息(WM_系列)。
-
Processes:按进程查看窗口。
-
Properties:选中某一项后在右侧或弹窗看到详细属性(HWND、类名、样式、ID、父窗口、坐标等)。
-

基本流程
-
打开目标程序(例如一个对话框或自定义窗口)。
-
在 Spy++ 中点击工具栏的 Find Window(放大镜图标),光标会变成十字/放大镜。
-
把这个放大镜拖拽到目标控件上,释放。Spy++ 会自动在 Window Tree 中选中对应窗口。
-
双击该窗口或右键选择 Properties,会弹出详细信息窗口:
-
HWND(十六进制/十进制)
-
Class(类名,如
Button、Edit、Static、自定义类名) -
Caption / Text
-
Control ID(如果是子控件,资源 ID)
-
Parent/Owner
-
Styles / Extended Styles
-
位置与尺寸(坐标)
-
Process / Thread / Module(所属进程)
监控消息
-
选中目标窗口,右键 -> Messages -> Log Messages(或工具栏的消息按钮)。
-
在弹出的对话框里可以选择要监控的消息类别(鼠标、键盘、窗口、命令、非客户端、Draw 等),也可输入特定消息编号(例如
WM_COMMAND、WM_PAINT、WM_SETTEXT)。 -
选择是否要记录消息的所有参数(wParam/lParam)和是否显示十六进制/十进制。
- 点击 Start Logging 开始。触发 UI 操作后,Spy++ 会实时显示消息流。你可以保存日志用于分析。
例如:
-
HWND:用于代码操作(SendMessage、PostMessage、SetWindowText、GetWindowText、EnableWindow 等)。
-
ClassName:判断控件类型(标准控件通常是
Button、Edit、ComboBox、ListView等;自定义控件有自定义类名)。 -
Control ID(资源 ID):对于对子控件发送
WM_COMMAND等非常有用(特别是对话框资源的子控件)。 -
Parent/Owner:有些控件隐藏在子层次里,需要先定位父窗口再查找子窗口。
-
Window Styles:判断可见性、可交互性、是否是子窗口、是否WS_CHILD等。
-
消息序列:分析点击、输入、菜单选择会产生哪些消息,便于模仿(自动化脚本/测试)
1万+

被折叠的 条评论
为什么被折叠?



