Показать сообщение отдельно

  #1774  
Старый 17.06.2008, 16:06
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
С нами: 9489537

Репутация: 136
По умолчанию

Цитата:
И надо что так что бы открывалась типо на проге кнопка лоад на неё нажимаеш и прога запускает тот длл который с ней в одной папке.. Например:
Надо знать, что экспортировать из библиотеки dll, то есть какие функции экспортные.

Код:
// Есть экспортная функция, которая заранее известна и находится в dll 
// вот её прототип
f: function (p: PChar; b: Boolean): Boolean;

// Вот эта функция осуществляет загрузку dll библиотеки
// в адресное пространство вашей программы
procedure Call(DllName, ProcName: PChar); 
var 
  hModule: THandle; 
  P: Pointer; 
begin 
  f := NIL;  
  hModule := LoadLibrary(DllName); 
  if hModule <> 0 then p := GetProcAddress(hModule, ProcName); 
  if p <> NIL then f('ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ', false); 
end;
В итоге получается следующее

Код:
var
  Form1: TForm1;
  // Есть экспортная функция, которая заранее известна и находится в dll
// вот её прототип
  f: function (p: PChar; b: Boolean): Boolean;
implementation

{$R *.dfm}


// Вот эта функция осуществляет загрузку dll библиотеки
// в адресное пространство вашей программы
procedure Call(DllName, ProcName: PChar);
var
  hModule: THandle;
  P: Pointer;
begin
  f := NIL;
  hModule := LoadLibrary(DllName);
  if hModule <> 0 then p := GetProcAddress(hModule, ProcName);
  if p <> NIL then f('ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ', false);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Call('1.dll', 'ЗАРАНЕЕ_ИЗВЕСТНАЯ_ЭКСПОРТИРУЕМАЯ_ФУНКЦИЯ');
end;
 
Ответить с цитированием