关于取得别的进程中,ListView控件中的文本内容的问题!
目标进程中ListView控件中的每一行文本内容分为2子行显示(有个图表将行顶高了),
这样一来我只能得到上一子行的内容(并却内容并不完整,我想是由于这一子行的文字中有\0符,才使的只能取\0符前的文本内容,
如何何取得这一行的所有文本内容呢?(不管分了多少子行,其中有多少\0符)!
希望知道的达人指教.....
以下是我的代码:
-------------------------------------------------------------------
TCHAR szTMnetState[256];
memset(szTMnetState,0x00,sizeof(szTMnetState));
LVITEM lvitem, *plvitem;
int nItem =0;
DWORD PID =0;
HANDLE hProcess;
TCHAR *pItem;
//int iLen = ListView_GetItemCount(m_hTMnetLsitViewWnd);
memset(m_tszTMnetState,0x00,sizeof(m_tszTMnetState));
SendMessage(m_hTMnetLsitViewWnd,LVM_SETSELECTIONMARK,0,0);
nItem=SendMessage(m_hTMnetLsitViewWnd,LVM_GETNEXTITEM,-1,0);
if ( nItem == -1)
{
return;
}
else
{
GetWindowThreadProcessId(m_hTMnetLsitViewWnd, &PID);
hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
if (!hProcess)
{
return;
}
else
{
plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof (LVITEM), MEM_COMMIT, PAGE_READWRITE);
pItem=(TCHAR*)VirtualAllocEx(hProcess, NULL, 256, MEM_COMMIT, PAGE_READWRITE);
if (!plvitem)
{
return ;
}
else
{
nItem=0; lvitem.state=LVIS_STATEIMAGEMASK; lvitem.stateMask=LVIS_SELECTED;
lvitem.pszText = pItem;
lvitem.mask = LVIF_TEXT;
lvitem.cchTextMax = 256;
lvitem.iSubItem =0;
WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);
SendMessage(m_hTMnetLsitViewWnd, LVM_GETITEMTEXT, (WPARAM)nItem, (LPARAM)plvitem);
ReadProcessMemory(hProcess, pItem, szTMnetState, 256, NULL);
}
CloseHandle(hProcess);
VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);
VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE);
}
}
-------------------------------------------------------------------