Недавно добавленные исходники

•  TDictionary Custom Sort  3 104

•  Fast Watermark Sources  2 891

•  3D Designer  4 636

•  Sik Screen Capture  3 175

•  Patch Maker  3 392

•  Айболит (remote control)  3 464

•  ListBox Drag & Drop  2 832

•  Доска для игры Реверси  78 951

•  Графические эффекты  3 728

•  Рисование по маске  3 098

•  Перетаскивание изображений  2 471

•  Canvas Drawing  2 588

•  Рисование Луны  2 426

•  Поворот изображения  2 026

•  Рисование стержней  2 061

•  Paint on Shape  1 478

•  Генератор кроссвордов  2 114

•  Головоломка Paletto  1 687

•  Теорема Монжа об окружностях  2 116

•  Пазл Numbrix  1 607

•  Заборы и коммивояжеры  1 901

•  Игра HIP  1 242

•  Игра Go (Го)  1 181

•  Симулятор лифта  1 385

•  Программа укладки плитки  1 137

•  Генератор лабиринта  1 465

•  Проверка числового ввода  1 253

•  HEX View  1 415

•  Физический маятник  1 282

•  Задача коммивояжера  1 317

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Работа с другим приложением без 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;





Похожие по теме исходники

Nstruct (работа с DBF)

Работа с принтером

fwZIP - Работа с ZIP архивами

База данных без BDE

 

БД без BDE

Кривая Безье

Bezier Curves (кривые Безье)

Splay Line (Безье)

 

Сплайн на 8 точек (Безье)

Text Bezier Curve (Безье)

Кривые Безье на OpenGL

Keyboard Drivers Hooks

 

Low Level Mouse Hook

Shell Hook

Wnd Hooks

API Hook

 

Keyboard Hook

Hooks Samples

DLL Form

DLL in Resources

 

DLL Injector




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте