Re[6]: Информация из другого приложения
От: Oxygenium  
Дата: 05.05.05 18:18
Оценка:
Здравствуйте, Андрей Мельник, Вы писали:

АМ>Здравствуйте, Oxygenium, Вы писали:


O>>Спасибо за ответы.

O>>Да, действительно замена на ListView_GetItemText(wnd,5,0,ItemText,1024) непомогла, жертва все равно падает.
O>>А вот как сделать "покруче" я незнаю, если можно расскажите поподробнее, линки на статьи тоже непомешают.

АМ>Тут набор стандартый GetWindowThreadProcessId, OpenProcess, VirtualAllocEx, ReadProcessMemory. Пример

АМ>http://rsdn.ru/Forum/?mid=11702

Сделал как написано. Да действительно приложение жертва уже не вылетает, но и результат — всегда пустая строка:

HWND wnd = FindWindow(0, "Processes");
wnd = ::GetWindow(wnd, GW_CHILD);
wnd = ::GetWindow(wnd, GW_HWNDNEXT);
wnd = ::GetWindow(wnd, GW_HWNDNEXT);
wnd = ::GetWindow(wnd, GW_HWNDNEXT);
wnd = ::GetWindow(wnd, GW_HWNDNEXT);
wnd = ::GetWindow(wnd, GW_HWNDNEXT);
wnd = ::GetWindow(wnd, GW_HWNDNEXT);

DWORD dwProcessId; 
GetWindowThreadProcessId(wnd, &dwProcessId); 
HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwProcessId); 
LPSTR lpsz = (LPSTR) VirtualAllocEx(hProcess, NULL, 1024, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); 
ListView_GetItemText(wnd,0,0,lpsz,1024);
char ItemText[1024];
BOOL r = ReadProcessMemory(hProcess, lpsz, ItemText, 1024, NULL); // После выполнения в ItemText - пустая строка
VirtualFreeEx(hProcess, lpsz, 0, MEM_RELEASE);

Кто знает в чем теперь проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.