Форум: "Система";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c