Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 3 апреля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Работа с другим приложением без Hook и DLL на примере GetFocus

Автор: SottNick

На стандартной форме (Form1):

Form1.FormStyle=fsStayOnTop - форма поверх остальных окон

Объекты:

  1. ТАЙМЕР (Timer1) с периодом 1000 или меньше,
  2. 3 метки (Label1, Label2, Label3). назначение их см. в тексте процедуры
  3. У таймера событие OnTimer. а вот для нее обработчик:

 procedure TForm1.Timer1Timer(Sender: TObject);
 var
   dwTargetOwner: DWORD; //указатель на подключаемый процесс
   dwThreadID: DWORD; //указатель на текущий процесс
   Result: longbool;
 begin
   {В первой метке отображается Handle активного окна}
   Label1.Caption := IntToStr(GetForegroundWindow);
     //указатель на подключаемое приложение
 
   // Подключение потока другого окна
   // Указатель на подключаемый процесс
   dwTargetOwner := GetWindowThreadProcessId(GetForegroundWindow, nil);
   dwThreadID := GetCurrentThreadId(); //указатель на текущий процесс
   if (dwTargetOwner <> dwThreadID) then // если не один и тот же процесс
     Result := AttachThreadInput(dwThreadID, dwTargetOwner, TRUE); //подключение
 
   {Во второй метке отображается Handle объекта 'в фокусе' в активном окне}
   Label2.Caption := IntToStr(GetFocus); //фокус в другом приложении
 
   if (Result) then
     AttachThreadInput(dwThreadID, dwTargetOwner, FALSE); //отключение
 
   {В третей метке отображается Handle объекта 'в фокусе' в активном окне,
   но если это окно другого приложения, то Handle будет равен нулю,
   т.к. попытка получения Handle происходит после отключения потока}
   Label3.Caption := inttostr(GetFocus); //проверка после отключения
 
   {Эффект можно посмотреть, если запустить полученное приложение
   и сделать активным другое приложение}
   {Ясно, что полученный Handle объекта можно использовать
   по своему разумению. Например, считать из объекта текст и т.п.}
 
   // (C) SottNick 2000
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS