代码如下:但怎么弄都无法获得listview的指定位置数值,请高手帮帮我,谢谢了。//跨进程获取虚拟ListView控件的内容
void List_GetItemTextVirtual(HWND hWnd,int row,int clo,char* pSave,int sz)
{
DWORD dwProcess;
HANDLE hProcess;
NMLVDISPINFO Info;
pSave[0] = '\0';
GetWindowThreadProcessId(hWnd, &dwProcess);
// 申请内存
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwProcess);
NMLVDISPINFO* pTemp = (NMLVDISPINFO*)VirtualAllocEx(hProcess, 0, sizeof NMLVDISPINFO, MEM_COMMIT, PAGE_READWRITE);
if(0==pTemp)
{
MessageBox(0,"虚拟内存分配失败",0,MB_OK);
}
memset(&Info,0,sizeof Info);
Info.hdr.hwndFrom=hWnd;
Info.hdr.code=LVN_GETDISPINFO;
Info.item.mask=LVIF_TEXT;
Info.item.iItem=row;
Info.item.iSubItem=clo;
Info.item.cchTextMax=sz;
Info.item.pszText=pSave;
DWORD dWord = 0;
WriteProcessMemory(hProcess, pTemp, &Info, sizeof NMLVDISPINFO, &dWord);
int nChar = SendMessage(GetParent(hWnd),WM_NOTIFY,(WPARAM)GetDlgCtrlID(hWnd), (LPARAM)pTemp);
// 读数据
ReadProcessMemory(hProcess, pTemp, &Info, sizeof NMLVDISPINFO, &dWord);
// 释放内存
VirtualFreeEx(hProcess, pTemp, sizeof NMLVDISPINFO, MEM_RELEASE);
CloseHandle(hProcess);
sprintf(pSave, "%s", Info.item.pszText);
}
void List_GetItemTextVirtual(HWND hWnd,int row,int clo,char* pSave,int sz)
{
DWORD dwProcess;
HANDLE hProcess;
NMLVDISPINFO Info;
pSave[0] = '\0';
GetWindowThreadProcessId(hWnd, &dwProcess);
// 申请内存
hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwProcess);
NMLVDISPINFO* pTemp = (NMLVDISPINFO*)VirtualAllocEx(hProcess, 0, sizeof NMLVDISPINFO, MEM_COMMIT, PAGE_READWRITE);
if(0==pTemp)
{
MessageBox(0,"虚拟内存分配失败",0,MB_OK);
}
memset(&Info,0,sizeof Info);
Info.hdr.hwndFrom=hWnd;
Info.hdr.code=LVN_GETDISPINFO;
Info.item.mask=LVIF_TEXT;
Info.item.iItem=row;
Info.item.iSubItem=clo;
Info.item.cchTextMax=sz;
Info.item.pszText=pSave;
DWORD dWord = 0;
WriteProcessMemory(hProcess, pTemp, &Info, sizeof NMLVDISPINFO, &dWord);
int nChar = SendMessage(GetParent(hWnd),WM_NOTIFY,(WPARAM)GetDlgCtrlID(hWnd), (LPARAM)pTemp);
// 读数据
ReadProcessMemory(hProcess, pTemp, &Info, sizeof NMLVDISPINFO, &dWord);
// 释放内存
VirtualFreeEx(hProcess, pTemp, sizeof NMLVDISPINFO, MEM_RELEASE);
CloseHandle(hProcess);
sprintf(pSave, "%s", Info.item.pszText);
}
http://blog.csdn.net/l357630798/article/details/62417698