监视弹出窗口,读取SysListView32 控件内容

#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值