从任务管理器详细信息列表视图中获取项目

问题描述

我试图在标签 details获取任务管理器列表视图中的项目列表。

我可以使用 ListView_GetItemCount(hwnd)(一种 winapi 方法获取大多数信息,例如项目计数,它返回 260,这是任务管理器列表视图中的进程列表,还可以使用 {{1 }} 成功地。

但是当我尝试获取项目的文本,或按字符串搜索,或获取项目或列的特定索引上的文本时,它只会返回空字符串。

ListView_GetColumn(hwnd)

问题是什么?不只显示文本是否受到保护?因为我可以得到其他一切。我可以使用什么方法获取文本?

enter image description here

解决方法

携带结构指针的

ListView_...() 宏/LVM_... 消息(如 LVITEM*)无法跨进程边界封送这些结构。这些宏/消息只能在拥有 ListView 的同一进程中使用。因此,您必须使用 LVITEM 在 TaskManager 进程中远程分配一个 VirtualAllocEx(),发出 ListView_GetItem() 以填充该内存,然后使用 {{1} 将该数据编组回您自己的进程}}。不用说,像 TaskManager 这样的系统组件不太可能允许这样做。

您应该尝试改用 UI Automation 接口。它专为此类工作而设计。