Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.038 c
14-1100606459
Kuzma
2004-11-16 15:00
2004.12.05
Какой аппаратный ключ защиты выбрать?


3-1099467431
Olga_cc
2004-11-03 10:37
2004.12.05
Как откразить в отчетах поля тип MEMO


9-1091467989
P@uk
2004-08-02 21:33
2004.12.05
Движение и торможение


1-1101136171
MasterVovan
2004-11-22 18:09
2004.12.05
События и DLL


8-1094407602
IRYS
2004-09-05 22:06
2004.12.05
Preview mode для ScreenSaver a





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский