Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c