DLLEntryPoint(DLL_PROCESS_ATTACH); end. - раздел Религия, Хранения формы в динамических библиотеках В Разделе UsesПоявилось Объявление Двух Новых Модулей Win...
В разделе 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;
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ:
DLLEntryPoint(DLL_PROCESS_ATTACH); end.
Что будем делать с полученным материалом:
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Решение №1.
Самым первым решением этой проблемы стал модульное программирование. Ты пишешь какой-то кусок кода, оформляешь его в виде модуля, а потом просто используешь его в своих программах. Все прекрасно и
Проблема №1.
Давай представим ситуацию, когда один добрый человек написал прекрасный модуль размером в 1 мегабайт. Другой добрый человек решил воспользоваться его возможностями и подключил к своей программе. Мо
Проблема №2.
Пока существовали только однозадачные операционные системы, проблема с излишней растратой дискового пространства была единственной. Но как только задумались о многозадачности и в мыслях Билла Гейтс
Решение №2.
И вот тут было найдено вполне солидное решение: не стыковать модули с основной программой, а сохранять их в отдельный файл и пусть любая программа загружает его по мере надобности. Сказали, сделали
Из чего же сделан Windows?
Все наверно помнят такую песенку: "Из чего же, из чего же, из чего же, сделаны эти мальчишки?". Глупейшая песня, и я со слезами на глазах вспоминаю, как я в лагере (я имею ввиду пионерски
Графические движки.
Любой игрок обязан знать про существование OpenGL. Что это такое? Какой-то пакет программ? Какой-то SDK для создания графики? Ничего подобного, это всего лишь две динамические библиотеки opengl.dll
Begin end.
Если открыть менеджер проектов (Меню View->Project Manager), то в окне вообще не будет видно ни одного модуля. Это потому что код, который мы видели выше относиться к самой библиотеки. Вы
Begin end.
Обрати внимание, что функция у нас объявлена не так как всегда. В конце строки объявления, после типа возвращаемого значения стоит ключевое слово StdCall. Оно говорит о том, что дл
R:Integer; begin
r:=Summ(10,34);
Application.MessageBox(PChar(IntToStr(r)), 'Результат функции Summ'); end;
В первой строчке я вызываю функцию Summ с двумя
Implementation
Обрати внимание, что первое описание процедуры я написал не в разделе type, а до него:
procedure ShowAbout(Handle: THandle)stdcall;
Это не являет
If f>0 then
FreeAbout(f);
f:=ShowAbout(Handle); end;
Здесь идёт проверка, если f больше нуля, то надо освободить память от старого окна, а потом пытат
If @sa=nil then exit;//Функция не найдена
f:=sa(Handle); FreeLibrary(dllHandle); end;
Здесь у меня объявлено две локальные переменные: dllHandle – здесь будет храниться указатель на загруженную библиот
Begin end.
Первое, что здесь бросается в глаза – объявление в разделе typeнового типа – TCompProc. Новый тип объявлен как процедура с одним параметром в виде переменной типа PChar
Хотите получать на электронную почту самые свежие новости?
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Новости и инфо для студентов