XE6 跨进程获取SysListView32
cb6 用char * ,xe6 由于是宽字符 unicode ,改用wchar_t*。
xe6 如果用char * 获得的字符可能不全
方法一
bool GetListViewText(HWND hWnd, TStrings *list)
{
int vColumnCount;
int vItemCount;
int i, j;
wchar_t vBuffer[255];
DWORD vProcessId;
HANDLE vProcess;
LPVOID vPointer;
DWORD vNumberOfBytesRead;
String S;
TLVItem vItem;
if (!list)
exit;
vColumnCount = Header_GetItemCount(ListView_GetHeader(hWnd));
if (vColumnCount <= 0)
exit;
vItemCount = ListView_GetItemCount(hWnd);
GetWindowThreadProcessId(hWnd, & vProcessId);
vProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, false, vProcessId);
vPointer = VirtualAllocEx(vProcess, NULL, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
list->BeginUpdate();