Re[8]: Информация из другого приложения
От: Oxygenium  
Дата: 09.05.05 22:34
Оценка: 3 (1)
Наконец понял в чем моя ошибка, вот рабочий код:
void getItemText(HWND wnd, char *text, int item, int subItem)
{
    DWORD dwProcessId; 
    GetWindowThreadProcessId(wnd, &dwProcessId); 
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS/*PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE*/, FALSE, dwProcessId); 
    LPSTR lpsz = (LPSTR)VirtualAllocEx(hProcess, NULL, 4096, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); 
    LVITEM lvis = { 0 };
    lvis.iSubItem = subItem;
    lvis.cchTextMax = 1024;
    lvis.pszText = lpsz;
    LVITEM *lvi = (LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); 
    WriteProcessMemory(hProcess, lvi, &lvis, sizeof(LVITEM), NULL);
    ::SendMessage(wnd, LVM_GETITEMTEXT, (WPARAM)item, (LPARAM)lvi);
    BOOL r = ReadProcessMemory(hProcess, lpsz, text, 1024, NULL); 
    VirtualFreeEx(hProcess, lpsz, 0, MEM_RELEASE); 
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.