Модуль-заготовка для динамического подключения библиотекDelphi , Файловая система , DLL и PlugInsМодуль-заготовка для динамического подключения библиотек
Автор: Panov { **** UBPFD *********** by delphibase.endimus.com **** >> Модуль-заготовка для динамического подключения библиотек. Модуль подключается к проекту. Для загрузки и выгрузки библиотек используется по одной функции. Зависимости: windows.pas, sysutils.pas Автор: panov, panov@hotbox.ru Copyright: нет Дата: 30 марта 2004 г. ***************************************************** } unit proc; interface uses windows, sysutils, classes; const _MyLibraryName = '..\dll\proc.dll'; //имя библиотеки var hLib: THandle; procedure LoadLib; procedure UnloadLib; implementation procedure LoadLib; begin if hLib <> 0 then Exit; hLib := LoadLibrary(PChar(_MyLibraryName)); if (hLib = 0) then begin raise Exception.Create('Не могу загрузить библиотеку ' + _MyLibraryName); Exit; end; end; procedure UnloadLib; begin FreeLibrary(hLib); hLib := 0; end; initialization hLib := 0; end. Пример использования: unit proc; interface uses windows, sysutils; const _MyLibraryName = '..\dll\proc.dll'; //имя библиотеки var hLib: THandle; ExecCmd: procedure(const aCommand: string; const aShow, aWaitExit: Boolean); procedure LoadLib; procedure UnloadLib; implementation procedure LoadLib; begin if hLib <> 0 then Exit; hLib := LoadLibrary(PChar(_MyLibraryName)); if (hLib = 0) then begin raise Exception.Create('Не могу загрузить библиотеку ' + _MyLibraryName); Exit; end; @ExecCmd := GetProcAddress(hLib, 'ExecCmd'); end; procedure UnloadLib; begin FreeLibrary(hLib); hLib := 0; end; initialization hLib := 0; end. { В любом модуле пишем: uses proc; ... LoadLib; //Загрузка библиотеки. ExecCmd('c:\command.com',True,True); UnloadLib; //Выгрузка библиотеки. } Вот перевод текста на русский язык: Эта часть модуля Delphi обеспечивает динамическое загрузку библиотеки, позволяя загружать и выгружать библиотеки в runtime. Модуль предназначен для использования с единицами Windows и SysUtils. Модуль определяет два процедура: Модуль также определяет константу В примере использования процедура Функция Вот некоторые предложения по улучшению:
Вот обновленная версия кода с улучшенной обработкой ошибок и организацией:
В этом коде определена класс Модуль-заготовка для динамического подключения библиотек в Delphi, позволяющий загружать и выгружать библиотеку с помощью функций LoadLibrary и FreeLibrary. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: DLL и PlugIns ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |