Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Получение координат кнопки тулбара   Найти похожие ветки 

 
Лёля   (2006-12-18 13:09) [0]

Доброго времени суток!
Мне необходимо получить координаты кнопки тулбара. Делаю так:

var
 hToolBar: HWND;
 r: trect;
 
...

 hToolBar := FindWindowEx(hWindow, 0, "TToolBar", nil);
 if SendMessage(hToolBar, TB_GETITEMRECT, 3, lParam(@r)) <> 0 then
   ShowMessage(Format("%d %d", [r.Left, r.Top]));


По идее, в случае успеха SendMessage возвращает ненулевой результат (и, насколько я понимаю, заполненную структуру TRect). Она его и возвращает. Вот только значения TRect не изменились. Что же делать? Дескриптор окна тулбара найден правильно и кнопка с индексом 3 существует тоже.


 
Rouse_ ©   (2006-12-18 13:11) [1]

Тулбар находиться в твоем приложении или в чужом?


 
Лёля   (2006-12-18 13:18) [2]

в чужом, конечно...


 
Rouse_ ©   (2006-12-18 14:31) [3]

А зачем тогда передаешь адрес структуры TRect (в LParam) расположенной в таоем адресном пространстве, а не в чужом?


 
Лёля   (2006-12-18 15:57) [4]

а.. спасибо большое, разобралась, мой кусочек кода:


var
 r: TRect;
 dwQRDpid: DWORD;
 hProcess:  THandle;
 addr:      pointer;
 count:    cardinal;
 xPosTB, yPosTB: Integer;  
...
 hWindow := FindFirstQrdViewer;
 hToolBar := FindWindowEx(hWindow, 0, "TToolBar", nil);

 GetWindowThreadProcessId(hWindow, dwQRDpid);
 hProcess := OpenProcess(PROCESS_VM_READ or PROCESS_VM_OPERATION, false, dwQRDpid);
 addr := VirtualAllocEx(hProcess, @r, SizeOf(r), MEM_COMMIT, PAGE_READWRITE);
 SendMessage(hToolBar, TB_GETITEMRECT, 3, lParam(addr));
 ReadProcessMemory(hProcess, addr, @r, SizeOf(r), count);
 VirtualFreeEx(hProcess, addr, SizeOf(r), MEM_RELEASE);
 xPosTB := r.Left  + 1;
 yPosTB := r.Top + 1;
 CloseHandle(hProcess);
 SendMessage(hToolBar, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(xPosTB, yPosTB));
 SendMessage(hToolBar, WM_LBUTTONUP, 0, MakeLParam(xPosTB, yPosTB));



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.049 c
2-1177699162
Ezorcist
2007-04-27 22:39
2007.05.20
Многопоточность в Tserversocket


2-1177689968
Oleg_teacher
2007-04-27 20:06
2007.05.20
Обьединит файлы


2-1177584964
Аффтар
2007-04-26 14:56
2007.05.20
Как зарегистрировать DDL?


15-1176199472
vasIZmax
2007-04-10 14:04
2007.05.20
Тестирование... на знание


6-1163694731
Tiberius
2006-11-16 19:32
2007.05.20
Текст из браузера