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

Вниз

Vozmozhno li naiti v ToolBar-e Knopki   Найти похожие ветки 

 
sergeii ©   (2004-10-20 10:40) [0]

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


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

Mne nado Clicknut na etoi knopke. Spasibo


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

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

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


 
sergeii ©   (2004-10-20 13:11) [3]

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


 
inic ©   (2004-10-20 13:49) [4]


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 14:56) [5]

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


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

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

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


 
sergeii ©   (2004-10-20 15:26) [7]

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


 
sergeii ©   (2004-10-20 15:40) [8]

Вот так работает толко кнопочка нажата но деиствий которые должны происходить после нажатия на кнопку не происходит
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);
то тогда вообсхе ни чего не происходит, т.е. нажав на кнопку должно появитса другая форма, она не появляетса.
Спасибо


 
inic ©   (2004-10-20 16:44) [9]

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

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 17:14) [10]

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


 
inic ©   (2004-10-20 17:57) [11]

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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
3-1099547585
DimDim
2004-11-04 08:53
2004.12.05
Что за база?????


14-1100661404
Думкин
2004-11-17 06:16
2004.12.05
С днем рождения! 17 ноября!


1-1101313562
Ilg
2004-11-24 19:26
2004.12.05
Variable Name Expected


1-1100687999
Chuk
2004-11-17 13:39
2004.12.05
Туплю по заголовку формы


1-1100966872
лена19
2004-11-20 19:07
2004.12.05
действительные типы