我完全知道如果我嘗試獲取另一個應用程序列表視圖項的緩衝區,我需要解決內存空間邊界所以我在做什麼是鉤哪個返回好了,沒有錯誤,成功則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