Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Пример обратного вызова DLL

Обратный вызов (callback) для NotifyRegister должен находиться в DLL. Вам не нужен MakeProcInstance, просто добавьте "export" к объявлению функции. Нижеследующий код является простым примером DLL для Delphi. Вы должны запустить все тесты вне Delphi или же ваша программа не получит никаких уведомлений (notifications). Все это выглядит похожим на Delphi, зарегистрировавшей перехват с Toolhelp...


library Lib1;

uses WinTypes, Messages, WinProcs, Toolhelp;

const

  WM_NOTIFY = WM_USER + $100;

var

  targetHWnd: HWnd;

function HookProc(wID: Word; dwData: LongInt): Bool; export;

begin
  PostMessage(targetHWnd, WM_NOTIFY, wID, dwData);
  Result := False
end;

procedure InstallHook(notifyWindow: HWnd); export;

begin
  if targetHWnd = 0 then
  begin
    if not NotifyRegister(0, HookProc, NF_NORMAL) then
    begin
      MessageBox(notifyWindow, 'Неудача NotifyRegister!',
        'Ошибка!', MB_OK + MB_ICONSTOP);
    end
    else
    begin
      targetHWnd := notifyWindow;
    end;
  end;
end;

procedure UnInstallHook; export;

begin
  if targetHWnd <> 0 then
  begin
    NotifyUnregister(0);
    targetHWnd := 0;
  end;
end;

exports

  InstallHook,
  UnInstallHook;

begin

  targetHWnd := 0;
end.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay