ysc3839
2023-10-21 11:52:37 +08:00
看上去是很标准的 Win32 控件,应该不难。主要难点大概是获取第一步 ListView 中项目的文字,应该是得在目标进程中分配内存。
大致步骤是:
找到左侧窗口的句柄。
找到 ListView 的句柄。
在目标进程分配内存 (VirtualAllocEx),发送消息读取项目名称到刚分配的内存中 (LVM_GETITEMTEXT),读取内存数据到自己进程中 (ReadProcessMemory),释放内存 (VirtualFreeEx)。找到对应条目,发送消息直接选中 (LVM_SETITEMSTATE)。
找到 2 按钮的句柄,发送消息模拟点击。
找到右侧窗口的句柄。
找到 3ComboBox 的句柄。发送消息选中包含指定文字的项目 (CB_SELECTSTRING ,大概也需要像上面那样分配内存)。
找到 4 标签的句柄,读取文本。
查找顶级窗口句柄可以用 FindWindow ,传入标题和类名即可,类名可以用 Spy++查看。
查找子控件句柄的话,一般子控件都会编号的,可以用 GetDlgItem 获取,编号可以用 Spy++查看。有编号的话,按钮大概也不需要模拟点击了,可以给父窗口发 WM_COMMAND 直接触发操作。