Текст из дерева sysListView32 - PullRequest
0 голосов
/ 12 июля 2011

Пытается получить строку sysListView32 из другого процесса. Список это дерево. И для первого столбца возвращает пустую строку. Подскажите, в чем проблема?

Изображение дерева: дерево Код:

vProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ |
    PROCESS_VM_WRITE, False, vProcessId);
 vPointer = VirtualAllocEx(vProcess, NULL, 4096, MEM_RESERVE | MEM_COMMIT,
    PAGE_READWRITE);
 vItem.mask = LVIF_TEXT;
 vItem.iItem = I;
 vItem.iSubItem = J;
 vItem.cchTextMax = sizeof(vBuffer);
 vItem.pszText = (wchar_t*)vPointer +sizeof(TLVItem);
 WriteProcessMemory(vProcess, vPointer, &vItem, sizeof(TLVItem),
            &vNumberOfBytesRead);
 SendMessageW(mHandle, LVM_GETITEMW, I, (LPARAM)vPointer);
 ReadProcessMemory(vProcess, (wchar_t*)vPointer +sizeof(TLVItem),
            vBuffer, sizeof(vBuffer), &vNumberOfBytesRead);
 RESULT = UnicodeString(vBuffer);

 VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE); // free mem
 CloseHandle(vProcess);

1 Ответ

0 голосов
/ 12 июля 2011

Вы не распределили VirtualAl блок памяти в целевом процессе, поэтому его там нет.

Вместо того, чтобы использовать экстремальные хакеры, чтобы попытаться получить это, почему бы не использовать один из API специальных возможностей, чтобы получить эту информацию в перекрестном процессе. Например, UIA переходит на XP и поддерживает это:

http://msdn.microsoft.com/en-us/library/ms726294(VS.85).aspx

Martyn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...