我完全知道如果我尝试获取另一个应用程序列表视图项的缓冲区,我需要解决内存空间边界所以我在做什么是钩哪个返回好了,没有错误,成功则ListView_GetItem()宏和LV_GETITEMTEXT返回空STRING,而获得另一个APP列表视图项
enter code here
LVITEM lvi;
lvi.cchTextMax = 552;
lvi.mask = LVIF_TEXT;
_tfreopen(path,_T("w"),stdout);
for (int nItem = 0; nItem < nMaxItems; nItem++) {
// Get the name and position of a ListView item.
lvi.iSubItem = 0;
lvi.iItem = nItem;
lvi.pszText = szName;
ListView_GetItem(hWndLV, &lvi);
wprintf(L"%s, ", szName);
wprintf(L"%s, ", lvi.pszText);
for (int subitem = 0; subitem < columns; subitem++)
{
lvi.iSubItem = subitem;
lvi.iItem = nItem;
lvi.pszText = szName;
ListView_GetItem(hWndLV, &lvi);
wprintf(L"%s, ", szName);
wprintf(L"%s, ", lvi.pszText);
}
wprintf(L"%s", "\n");
}
wprintf(L"%s", GetLastError());
fclose (stdout);
与GetLastError函数没有错误,这完美的作品上的任何其他列表视图我尝试过,除了这个程序,是有可能仍然得到项目文本不知何故?
你能给我们提供关于这个不起作用的应用程序的更多信息吗?另外,你的问题的第一句话并没有意义。 – 2011-02-01 01:35:00
@Cody第一句反映了LVM_GETITEMTEXT传递一个指向LVITEM的指针,而这个指针并不跨越进程边界。所以你必须用WriteProcessMemory/ReadProcessMemory做一些技巧才能使它工作。请参阅http://www.codeproject.com/KB/threads/int64_memsteal.aspx – 2011-02-01 13:53:54
@Cody我只给了你C#答案的最后一票 - 你应该得到比所有努力都多的单选票! – 2011-02-01 13:57:10