Главная страница
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.029 c
14-1079863601
Goida
2004-03-21 13:06
2004.04.18
Глюки, глюки, глюки!!!! Форум не обновляется!..


1-1080420635
Vadim
2004-03-27 23:50
2004.04.18
Как сделать замену символов в TRichEdit ?


1-1080336872
IGray
2004-03-27 00:34
2004.04.18
Хитрые исключения в конструкторе


1-1080889492
still_swamp
2004-04-02 11:04
2004.04.18
D8 и ADO


3-1079942569
Gaval
2004-03-22 11:02
2004.04.18
DBGrid