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

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

Как найти HWND у TSpeedButton в чужом приложении? [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


comwad ©   (2004-01-30 14:01:00) 

Добрых суток, ALL !
Используется код для просмотра имен и классов компонентов в
ЧУЖОМ приложении.

var
wnd, TheChildHandle: HWND;
ButtonCaption: Array[0..NameLength] of Char;
ButtonCaptionN: Array[0..NameLength] of Char;

  wnd := FindWindow(nil, PAnsiChar(NameApp));
  if wnd 0 then
  begin
  GetClassName(wnd, ButtonCaption, NameLength);
  GetWindowText(wnd, ButtonCaptionN, NameLength);
  Memo1.Lines.Add(String(ButtonCaption)+'  '+IntToStr(TheChildHandle)+' Name:'+String(ButtonCaptionN));
  End;

Находятся без проблем компоненты классов, находящиеся в иерархии ... TComponent-TControl-tWinControl
:TButton,TBitBtn и т.д.

Проблема заключается в том  - как найти  HWND у TSpeedButton,который имеет иерархию
TComponent-TControl-tGraphicControlи TMainMenu?

Кстати как видно - с первой часть проблемы разобрался  - всем спасибо!
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1074063655&n=5


comwad   (2004-02-04 13:29:00) [1]

Все работает .
Всем спасибо.

SendMessage(bar, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(5,5));
SendMessage(bar, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(5,5));


comwad   (2004-01-30 15:49:00) [2]

Непонятно,если несколько SpeedButton на ToolBar,
каким методом вычислить нужный SpeedButton ?


BiN   (2004-01-30 15:08:00) [3]

...вдогонку к [6]
Прошу прощения за непроверненную инфомацию :(

скорее здесь подойдет TB_SETSTATE и TBSTATE_PRESSED, но и то - для tool-, а не для speedbutton


BiN   (2004-01-30 14:51:00) [4]

WM_KEYDOWN на тулбаре


MBo   (2004-01-30 14:48:00) [5]

см. Toolbar Messages


comwad   (2004-01-30 14:41:00) [6]

Хотел бы задать свой вопрос немного по-другому.
Имеются ToolBar c TSpeedButton.
ToolBar имеет дискриптор,а SpeedButton нет.
Можно ли как-то произвести "нажатие" на один из SpeedButton , расположенный на
ToolBar через HWND этого ToolBar?

Типа, что работает с имеющими Handle TWinControl-ами:
SendMessage(TheChildHandle,WM_LButtonDown,1,1);
SendMessage(TheChildHandle,WM_LButtonUP,1,1);


Или это в принципе невозможно?


MBo   (2004-01-30 14:26:00) [7]

да, GetMenu может пригодиться.


Ihor Osov'yak   (2004-01-30 14:22:00) [8]

да и теоритически также...


MBo   (2004-01-30 14:12:00) [9]

HWND у TSpeedButton найти трудно... Практически невозможно...

Ведь ты иерархию привел - а разобрался, что она значит?

Да и с TMainMenu не выйдет


Наверх

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