Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » API

Работа с другим приложением без 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
Категория: API | Добавил: DelphiAiX (09.05.2012)
Просмотров: 903 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]