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

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

Имитация нажатия кнопки. [D5, Win2k]


[HDD]John ©   (2002-03-27 17:45:00) 

Надо имитировать нажатие кнопки. Использую функцию keybd_event.
Но она нажимает только в активном окне, а можно ли сделать так чтобы она нажимала в неактивном окне ????

На что мне ответили:

Попробуй отправить тому окну WM_KEYDONW и WM_KEYUP, должно сработать.

Но чето не понял как это мне поможет ???Поясните ПЛИЗ


[HDD]John   (2002-03-28 13:48:00) [1]

Класные штуки сеньку вери мач они мне пригодятся....Но боюсь я не правильно объяснил... Мне надо чтобы в левом (не дельфинском) окне эмитировалось нажатие КЛАВИШИ ТАВ


Chris   (2002-03-28 08:18:00) [2]

Если кому-нибудь пригодится, то эту прогу я использую при включении компьютера. Запускается она по ключу из RunService (до появления окошка "введите сетевой пароль") и нажимает кнопку OK (у меня пустой пароль).

procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
cName, wName: PChar;
begin
Timer1.Enabled:=False;
if FindWindow("#32770","Ввод сетевого пароля")>32 then
begin
cName:=StrNew(" ");
wName:=StrNew(" ");
for i:=32 to 10000 do
if isWindow(i) then
begin
GetClassName(i,cName,50);
GetWindowText(i,wName,50);
if (cName="Button")and(wName="ОК") then
begin
SendMessage(i,WM_LBUTTONDOWN,0,0);
// Внимание!Кнопку надо не только нажать, но еще и отпустить!
SendMessage(i,WM_LBUTTONUP,0,0);
Close;
end;
end;
StrDispose(cName);
StrDispose(wName);
end;
Timer1.Enabled:=True;
end;


cok   (2002-03-27 18:20:00) [3]

КОРОЧЕ, СКАЛИХАСОВСКИ, ЕНТО УЖЕ БЫЛО:
Var
ButClassName,ButCaption:String;
MainWnd,ButWnd:HWND;
Begin
ButClassName:="имя_класса_кнопки";
ButCaption:="надпись_на_кнопке";
MainWnd:=<хендл_окна_на_котором_находится_кнопка>;
ButWnd:=FindWindowEx(MainWnd, 0, PChar(ButClassName), PChar(ButCaption));
PostMessage(ButWnd, BM_CLICK, 0, 0);
End;



Наверх

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