Вниз
Скачать: CL | DM;

Wnd   Найти похожие ветки 

← →
Cerber ©   (2004-02-21 10:24) [0]

Wnd: Идентификатоp окна или 0 для игноpиpования нажатий клавиш. Я не много не понял что это заиндефикатор можно привести пример для блакнота.


← →
olookin ©   (2004-02-21 10:53) [1]

Сначала ищем нужное окно. Делаем это по поиску WindowText. Например, нужно окно Блокнота - у него title содержит слово "Блокнот".

procedure TForm1.Getwindow1Click(Sender: TObject);
var tl: string;
  h,h1: hWnd;no: boolean;
begin
 //ищем отталкиваясь от окна своей программы
 tl:="Блокнот";
 //назначаем хэндл начального окна - это окно нашей программы
 h:=Form1.Handle;
 h1:=h; no:=false;
 //сначала ищем по Z-последовательности окна следующие за окном программы
 while no=false do begin
 //получаем хэндл следующего окна
 h:=GetNextWindow(h,GW_HWNDNEXT);
 //если хэндл равен 0 то больше окон нет - выходим из while
 if h=0 then no:=true;
 //получаем title найденного окна
 GetWindowText(h,p,255); s:=StrPas(p);
//если в title окна есть слово tl то делаем это окно активным
 if Pos(tl,s)<>0 then begin
 SetForegroundWindow(h);
//и перерисовываем его - ыв принципе можно и не делать
 RedrawWindow(h,0,0,RDW_VALIDATE and RDW_UPDATENOW and RDW_ALLCHILDREN);
//и эмулируем нажатие клавиши, например символа "А"  
 SimulateKeystroke(ord("A"),0);
//и например переводим каретку на строку вниз - т.е. проще говоря жмем enter
 SimulateKeystroke(vk_return,0);
//и после всего этого выходим из while
 no:=true; break; end;
 end;

 //если не нашли среди окон впереди, ищем окна находящиеся перед окном программы
 if no=false then begin h:=h1;
 while no=false do begin
 h:=GetNextWindow(h,GW_HWNDPREV);
 if h=0 then no:=true;
 GetWindowText(h,p,255); s:=StrPas(p);
 if Pos(tl,s)<>0 then begin
 SetForegroundWindow(h);
 RedrawWindow(h,0,0,RDW_VALIDATE and RDW_UPDATENOW and RDW_ALLCHILDREN);
 SimulateKeystroke(ord("A"),0);
 SimulateKeystroke(vk_return,0);
 no:=true; break; end;
 end;
 end;
end;

эмулятия нажатия клавиши....
procedure SimulateKeystroke(Key : byte; extra : DWORD);
begin
 keybd_event(Key,extra,0,0);
 keybd_event(Key,extra,KEYEVENTF_KEYUP,0);
end;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
1-1080308282
***ghost***
2004-03-26 16:38
2004.04.18
Полноэкранный режим в Delphi?


6-1076771254
MAC
2004-02-14 18:07
2004.04.18
Анализатор протокола


3-1079605222
sergej
2004-03-18 13:20
2004.04.18
Local sql


14-1079808990
Sergey Masloff
2004-03-20 21:56
2004.04.18
Чудеса женской интуиции


1-1080984541
Новичек2
2004-04-03 13:29
2004.04.18
Разница между TabControl и PageControl..




   Наверх