Модуль-заготовка для динамического подключения библиотек
Автор: Panov
WEB-сайт: http://delphibase.endimus.com
{ **** UBPFD *********** by delphibase.endimus.com **** >> Модуль-заготовка для динамического подключения библиотек. Модуль подключается к проекту. Для загрузки и выгрузки библиотек используется по одной функции. Зависимости: windows.pas, sysutils.pas Автор: panov, [email protected] 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; //Выгрузка библиотеки. }
Далее: Можно ли определить полный путь и имя файла запущенной DLL из самой DLL »»