使用LVM_GETITEM和SendMessage在C中获取LVITEM的文本

时间:2010-12-23 14:19:55

标签: c listview listviewitem

我正在尝试从另一个进程的列表视图中读取文本。到目前为止,我已经能够获得行数和列数。现在我想通过每个单元格阅读它。我做了一些研究,我发现我需要使用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);

1 个答案:

答案 0 :(得分:1)

由于包含文本的内存块由另一个进程拥有,因此您需要提取一些技巧来将文本从进程封送到您的进程中。

这是我在2004年回复的博客文章,展示了如何做到这一点。请注意,您需要拥有管理员权限才能执行此操作。

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