#include <Windows.h>
#include
#include
#include
#include
#include <Commctrl.h>
// 函数声明
void ReadSysListViewContents(HWND hwndListView);
// 程序的主监视函数
void MonitorWindow(LPCWSTR windowTitle) {
while (true) {
// 查找目标窗口
HWND hwndTarget = FindWindow(NULL, windowTitle);
if (hwndTarget != NULL) {
std::cout << "找到窗口: " << std::wstring(windowTitle).c_str() << std::endl;
// 查找 SysListView32 控件
HWND hwndListView = FindWindowEx(hwndTarget, NULL, L"SysListView32", NULL);
if (hwndListView != NULL) {
std::cout << "找到 SysListView32 控件,读取内容..." << std::endl;
ReadSysListViewContents(hwndListView);
} else {
std::cout << "未找到 SysListView32 控件!" << std::endl;
}
break; // 窗口找到后结束循环
}
// 暂停一段时间后重试
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
}
// 读取 SysListView32 的内容
void ReadSysListViewContents(HWND hwndListView) {
// 获取列表项的数量
int itemCount = SendMessage(hwndListView, LVM_GETITEMCOUNT, 0, 0);
std::cout << "列表项数: " << itemCount << std::endl;
// 遍历所有项并读取文本
for (int i = 0; i < itemCount; i++) {
// 准备接收项文本的结构
char itemText[256];
LVITEM lvi = { 0 };
lvi.iItem = i; // 列表项索引
lvi.iSubItem = 0; // 默认获取第一列
lvi.cchTextMax = sizeof(itemText);
lvi.pszText = itemText;
// 获取列表项文本
SendMessage(hwndListView, LVM_GETITEMTEXT, i, (LPARAM)&lvi);
// 输出读取到的文本
std::cout << "项 " << i << ": " << itemText << std::endl;
}
}
int main() {
// 替换为你要监视的窗口标题
LPCWSTR windowTitle = L"目标窗口标题"; // 例如: L"文件传输"
std::cout << "开始监视窗口..." << std::endl;
// 开始监视指定窗口
MonitorWindow(windowTitle);
return 0;
}