Пример обратного вызова DLL

Советы » DLL » Пример обратного вызова 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

.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2023 - All Rights Reserved - www.delphirus.com