ListView_GetItem()macros和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没有错误,这工作完美的任何其他listview我以前试过,除了这个应用程序,是否有可能仍然获取项目文本?

Solutions Collecting From Web of "ListView_GetItem()macros和LV_GETITEMTEXT返回空STRING,而获得另一个APP列表视图项目"

也许这是一个所有者绘制的列表视图(LVS_OWNERDRAWFIXED)? 如果是这种情况,将不可能没有私人知识的应用程序拥有它的文本。

您不需要使用钩子来跨越流程边界。 您可以使用WriteProcessMemory / ReadProcessMemory如以下代码项目文章中所述: http : //www.codeproject.com/KB/threads/int64_memsteal.aspx

你必须注意的是穿越32/64位的边界。 我知道现在的方式来实现这一点。