В разделе usesпоявилось объявление двух новых модулей windows и dialogs, без них наш код не скомпилируется. Чуть дальше появилась процедура DLLEntryPoint с одним параметром, в котором будет передаваться событие, которое произошло. Внутри процедуры я проверяю оператором caseтип пришедшего сообщения и в зависимости от этого вывожу сообщение.
Между beginи endбиблиотеки я назначаю переменной DLLProc нашу процедуру. После этого я вызываю её и в качестве параметра указываю событие DLL_PROCESS_ATTACH.
На компакт диске, в директорииПримерыГлава 18Entryты можешь увидеть пример этой программы.
18.8. Вызов из библиотек процедур основной программы.
еперь я хочу тебе показать ещё один трюк с использованием DLL библиотек. Мы уже познали многое и пора увидеть, как можно из библиотеки DLL вызывать процедуры, описанные в основной программе. Это очень сильный способ сообщать основной программе, о каких либо событиях происходящих в библиотеке.
Создай новый проект динамической библиотеки. В основном модуле напишем следующий код:
library FuncProject;
uses SysUtils, Classes;
type TCompProc= procedure(Str:PChar);StdCall;
procedure CompS(Str:PChar; Proc:TCompProc);StdCall; begin if @Proc<>nil then TCompProc(Proc)(Str); end;
exports CompS index 10;
{$R *.res}