我正在尝试从另一个进程的列表视图中读取文本。到目前为止,我已经能够获得行和列的计数。现在,我想遍历每个单元格并阅读它。我做了一些研究,发现需要使用SendMessage来获取每个单元格的LVITEM。我认为LVITEM.iItem必须是行#,而LVITEM.iSubItem必须是列#。我还将如何将文本放入char *中。我看到了一些使用CString :: GetBuffer的示例。但是我在c中,所以我没有那个,是否有等效的方法或其他方法可以做到这一点?

char* itemText;

LVITEM itemInfo = {0};
itemInfo.iItem = r; // r is an int. this should be row # right?
itemInfo.iSubItem = c; // c is an int, this should be the column # right?
itemInfo.mask = LVIF_TEXT;
itemInfo.cchTextMax = 256;
itemInfo.pszText = itemText;
SendMessage(procList, 0x1005, 0, (LPARAM)&itemInfo);

最佳答案

因为包含文本的内存块是另一个进程所拥有的,所以您将需要一些技巧来将文本从该进程编组到您的进程中。

这是我2004年写的一篇博客文章,展示了如何完成此操作。当心,您将需要具有管理员权限才能执行此操作。

http://taylorza.blogspot.com/2009/08/archive-hacking-my-way-across-process.html

10-07 15:10