![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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