![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имитация нажатия кнопки. [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;