C++ 从taskmanager详细信息列表视图获取项目

C++ 从taskmanager详细信息列表视图获取项目,c++,windows,listview,winapi,taskmanager,C++,Windows,Listview,Winapi,Taskmanager,我试图在taskmanager的列表视图中的选项卡详细信息下获取项目列表 我可以使用ListView\u GetItemCount(hwnd)(一种winapi方法)获取大多数信息,例如项目计数。它返回了taskmanager ListView中的进程列表260,并且还可以使用ListView\u GetColumn(hwnd)成功获取标题计数。 但当我尝试获取项目的文本,或按字符串搜索,或获取项目或列的特定索引上的文本时,它只返回空字符串 ListView_GetItem(hwnd, pit

我试图在taskmanager的列表视图中的选项卡
详细信息下获取项目列表

我可以使用
ListView\u GetItemCount(hwnd)
(一种winapi方法)获取大多数信息,例如项目计数。它返回了taskmanager ListView中的进程列表
260
,并且还可以使用
ListView\u GetColumn(hwnd)
成功获取标题计数。

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

ListView_GetItem(hwnd, pitem)

有什么问题?仅显示文本是否受保护?因为我可以得到其他一切。我可以用什么方法来获取文本?
ListView_…()
macros/
LVM_…
带有结构指针的消息,如
LVITEM*
,无法跨进程边界封送这些结构。这些宏/消息只能在拥有ListView的同一进程中使用。因此,您必须使用
VirtualAllocEx()
在TaskManager进程内远程分配
LVITEM
,发出
ListView\u GetItem()
以填充该内存,然后使用
ReadProcessMemory()
将该数据封送回您自己的进程。不用说,像TaskManager这样的系统组件不太可能允许这种情况


您应该尝试使用接口。它是为这种工作而设计的。

ListView\u GetItem
take address。你是从什么过程来做这件事的?如果不是从进程,listview所在的位置-这当然不起作用。和main-尝试这样做有什么意义?我正在传递
hwnd
,并且已经可以访问列表项计数和其他属性,除了文本错误的问题解决方案。为什么不使用API获取信息?@DavidHeffernan我计划基于PID选择和操作taskmanager列表本身以进行测试。我已经可以获得项目的数量,我正在以管理员的身份运行。只有文本内容是一个麻烦获取计数很容易,因为它只是一个可以直接在消息返回值中携带的整数。但是跨流程边界封送实际数据需要更多的工作。我可以删除项,甚至清除视图。注射会给心脏带来问题antiviruses@Abraham当前位置实际上你有很多选择。根据所需的列,可能更容易直接检索,而不是通过任务管理器检索。@Abraham您确实可以选择。我甚至给了你一个选择——UI自动化。