Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.032 c
3-1079696404
wadimkas
2004-03-19 14:40
2004.04.18
Результат из Tquery


3-1079988659
Алексей
2004-03-22 23:50
2004.04.18
БД "Склад"


11-1062155159
Dimaxx
2003-08-29 15:05
2004.04.18
KOLDHTMLEDIT не удаляется по Free!!!


7-1076695634
Maksss
2004-02-13 21:07
2004.04.18
Консоль в полно экранный режим


14-1080211574
panov
2004-03-25 13:46
2004.04.18
PGP в TheBat





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский