{ **** 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; //Выгрузка библиотеки. }
|