ktulx
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору delover Это не я, честное слово. Вообще вот так удаётся получить количество видимых иконок: Код: hwd := FindWindow('Shell_TrayWnd', nil); hwd := FindWindowEx(hwd, 0, 'TrayNotifyWnd', nil); hwd := FindWindowEx(hwd, 0, 'SysPager', nil); hwd := FindWindowEx(hwd, 0, 'ToolbarWindow32', nil); if hwd <= 0 then Exit; GetWindowThreadProcessId(hwd, @PID); hProc := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, false, PID); lpCmn := VirtualAllocEx(hProc, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE); Count := SendMessage(hwd, TB_BUTTONCOUNT, 0, 0); | А вот здесь что-то не так: Код: for i := 0 to Count-1 do begin ZeroMemory(@btnInfo, sizeof(btnInfo)); WriteProcessMemory(hProc, lpCmn, @btnInfo, sizeof(btnInfo), buff); SendMessage(hwd, TB_GETBUTTON, i, LPARAM(lpCmn)); ReadProcessMemory(hProc, lpCmn, @btnInfo, sizeof(btnInfo), buff); SendMessage(hwd, TB_GETBUTTONTEXT, btnInfo.idCommand, LPARAM(LPARAM(lpCmn) + sizeof(btnInfo))); ReadProcessMemory(hProc, Pointer(LPARAM(lpCmn) + sizeof(btnInfo)),@IconCaption, 512, buff); ShowMessage(TrayIconCaption); end; | Почему-то btnInfo.idCommand всегда равно 4. Явно где-то ошибка. Но я нуб, с памятью особо работать не умею и не понимаю, в чём дело. Выручайте. |