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

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

Как нажать кнопку? [D6, Win2k]


Геннадий ©   (2005-02-11 15:17:00) 

Есть окно, Handle которого известен. На окне (то есть форме) размещена кнопка (Button). Каким образом возможно программно (из другого приложения) "нажать" эту кнопку? Поэкперементировал с SendMessage, но ничего не получилось. Подскажите, пожалуйста, как нажать кнопку?


Геннадий   (2005-02-11 16:06:00) [1]

Всем спасибо!  :)


unit CloseWnd;

interface

uses
 Classes, Windows, ShellAPI, Messages, Dialogs;

type

 TCloseWnd = class(TPersistent)
 private
   FCaption: string;
 protected
   function GetHandleForWnd(AWndCaption: PChar): THandle;
 public
   procedure DoCloseWindow;
   procedure PressButton(AButName: string);
   //
   property WndCaption: string read FCaption write FCaption;
 end;

implementation

{ TCloseWnd }

procedure TCloseWnd.DoCloseWindow;
var
 H  : THandle;
begin
 H:= GetHandleForWnd(PChar(FCaption));
 SendMessage(H, WM_CLOSE, 0, 0);
end;

function TCloseWnd.GetHandleForWnd(AWndCaption: PChar): THandle;
begin
 Result:= FindWindow(NIL, AWndCaption);
end;

procedure TCloseWnd.PressButton(AButName: string);
var
 Txt: PChar;
 H  : THandle;
 I  : integer;
 Par: THandle;
begin
 GetMem(Txt, 100);
 for i:=1 to 100 do
 begin
   Par:= GetHandleForWnd(PChar(FCaption));
   H:= FindWindowEx(Par, 0, 'TButton', PChar(AButName));
   GetWindowText(H, Txt, 100);
   if Txt = AButName then
   begin
     PostMessage(H, WM_KEYDOWN, 32, 0);
     PostMessage(H, WM_KEYUP, 32, 0);
   end;  
 end;
end;

end.


Jay1982   (2005-02-11 15:48:00) [2]

Jay1982 ©   (11.02.05 15:28) [2]
Только не #32, а просто 32 :)


Юрий Зотов   (2005-02-11 15:34:00) [3]

Только Handle должен давать окно КНОПКИ.
Используйте, например, FindWindowEx.


Jay1982   (2005-02-11 15:28:00) [4]


PostMessage(handle, WM_KEYDOWN, #32, 0);


Bes   (2005-02-11 15:23:00) [5]

а там помойму надо 2 сенд мессайджа

первый WM_LBUTTONDOWN
второй WM_LBUTTONUP типа щелчек


Наверх

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