Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: 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 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.108 c
7-1076416013
aleman
2004-02-10 15:26
2004.04.18
Как из программы отключить сеть?


9-1066209930
chuckloon
2003-10-15 13:25
2004.04.18
Игры shareware


6-1077102854
neodiX
2004-02-18 14:14
2004.04.18
WNetAddConnection2 - c$ - "Access denied"


14-1078404328
Fredericco
2004-03-04 15:45
2004.04.18
МКР. Mastak Kirovograd Party.


3-1080193730
WodneRu
2004-03-25 08:48
2004.04.18
Русские символы в FB