Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Vozmozhno li naiti v ToolBar-e Knopki [D6]


sergeii ©   (2004-10-20 10:40:00) 

С помощю toolbar := FindWindowEx(PLU, 0, 'TToolBar', nil) я нашол HWND toolbar-а, а возможно ли найти на нём кнопочку 'PLU', или ету всю операцию можно сделать через МENU, но как его найти? или просто можно переместить туда мышь и нажать кнопку, но как тогда и это совершить?
Спасибо.


inic   (2004-10-20 17:57:00) [1]

Тренировке на эксплорерном тулбаре показали, что видимо нет :(

А зачем вообще это надо, в какой проге надо нажать ?


sergeii   (2004-10-20 17:14:00) [2]

Может есть какие ещё способы нажать кнопочку в тоолбаре другой программы, по тому что ето тоже не идиот. Та програма по всему написана на Делфи
Спасибо.


inic   (2004-10-20 16:44:00) [3]

Если точно известно, что тулбар находится в делфи приложении, можно просто напросто сделать, так:

var
 ToolbarHandle: THandle;
 T: TToolButton;
 b: TTBButton;
begin
 SendMessage(Toolbarhandle, TB_GETBUTTON, <индекс кнопки>, Integer(@b));
 Pointer(t) := Pointer(b.dwData);
 t.Click;
end;


т.е. когда делфи с помощью мастдая создает кнопки, он сует указатель на объект класса TToolButton в поле dwData или lParam.


sergeii   (2004-10-20 15:40:00) [4]

Вот так работает толко кнопочка нажата но деиствий которые должны происходить после нажатия на кнопку не происходит
toolbar := FindWindowEx(PLU, 0, 'TToolBar', nil);
SendMessage(toolbar, TB_PRESSBUTTON, 1, 1);
а есле
toolbar := FindWindowEx(PLU, 0, 'TToolBar', nil);
SendMessage(toolbar, TB_PRESSBUTTON, 1, 1);
SendMessage(toolbar, TB_PRESSBUTTON, 1, 0);
то тогда вообсхе ни чего не происходит, т.е. нажав на кнопку должно появитса другая форма, она не появляетса.
Спасибо


sergeii   (2004-10-20 15:26:00) [5]

if StrComp(Buf, '') = 0 then begin
Здесь должно быть название кнопки так? и ещё когда выполняет етот код выдаёт ошибку


inic   (2004-10-20 15:10:00) [6]

Ты имеешь в виду в конце процедуры ? Тогда конечно.

А свой код, производимый над кнопкой, надо вместо жирного поставить (например спрятать ее можно).


sergeii   (2004-10-20 14:56:00) [7]

почемуто возвращает пустую строку Buf


inic   (2004-10-20 13:49:00) [8]


var ToolbarHandle: THandle;
   i, L, ButtonCount: Integer;
   Buf: PChar;
   Button: TTBButton;
begin
 ToolbarHandle := ToolBar1.Handle;
 ButtonCount := SendMessage(ToolbarHandle, TB_BUTTONCOUNT, 0, 0);
 Buf := nil;
 for i := 0 to ButtonCount - 1 do begin
   SendMessage(ToolbarHandle, TB_GETBUTTON, i, Integer(@Button));
   L := SendMessage(ToolbarHandle, TB_GETBUTTONTEXT, Button.idCommand, 0);
   ReallocMem(Buf, L + 1);
   SendMessage(ToolbarHandle, TB_GETBUTTONTEXT, Button.idCommand, Integer(Buf));
   if StrComp(Buf, 'ToolButton3') = 0 then begin

     SendMessage(ToolbarHandle, TB_PRESSBUTTON, Button.idCommand, 1);
     SendMessage(ToolbarHandle, TB_PRESSBUTTON, Button.idCommand, 0);

     Break;
   end;
 end;
 ReallocMem(Buf, 0);


Почему - то жирный код не работает. Буду читать...


sergeii   (2004-10-20 13:11:00) [9]

Можно было бы каой примерчик.
Спасибо


inic   (2004-10-20 12:32:00) [10]

Последовательность, ИМХО:

1. Запросить у тулбара количество кнопок (TB_BUTTONCOUNT)
2. Пройтись циклом по всем конпкам, просматривая их text (TB_GETBUTTONTEXT)
3. Ну и нажать/отпустить кнопку можно с помощью TB_PRESSBUTTON.


sergeii   (2004-10-20 11:24:00) [11]

Mne nado Clicknut na etoi knopke. Spasibo


Наверх

Титульная страница Поиск, карта сайта Написать письмо