Вниз
Скачать: CL | DM;

Помогите переделать статистичн. вызов DLL в динамичный.   Найти похожие ветки 

← →
rolex   (2005-08-27 22:57) [0]

Вот так функция вызывается статистически:

function GetProfilesDirectory:string;
function ProfilesDirectory_Exp(lpProfilesDir:PChar; var lpcchSize:DWord):Bool;
stdcall; external "userenv.dll" name "GetProfilesDirectoryA";

var szBuffer:array[0..MAX_PATH] of Char; dwSize:DWord;
begin
dwSize := MAX_PATH;
if ProfilesDirectory_Exp(szBuffer, dwSize) then result:=szBuffer;
end;


А как сделать динамический? Делаю так:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TProfi = function(lpProfilesDir: PChar; var lpcchSize: DWord): Bool;

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

function GetProfilesDirectory: string;
var
 hndDLLHandle: THandle;
 Profi: TProfi;
 szBuffer: array[0..MAX_PATH] of Char; dwSize: DWord;
begin
 dwSize := MAX_PATH;
 Result:="";
 try
   hndDLLHandle := loadLibrary("userenv.dll");
   if hndDLLHandle <> 0 then
   begin
     @Profi := getProcAddress(hndDLLHandle, "GetProfilesDirectoryA");
     if addr(Profi) <> nil then
     begin
       Profi(szBuffer, dwSize);
       Result := szBuffer;
     end;
   end;
 finally
   freeLibrary(hndDLLHandle);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
caption:=GetProfilesDirectory;
end;

end.


Ничего не вышло (кроме ошибки :) ).


← →
DiamondShark ©   (2005-08-27 23:35) [1]


> type
>  TProfi = function(lpProfilesDir: PChar; var lpcchSize:
> DWord): Bool;

TProfi = function(lpProfilesDir: PChar; var lpcchSize: DWord): Bool; stdcall;


← →
rolex   (2005-08-28 12:42) [2]

спасибо огромное!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.022 c
4-1122366063
ZendCoder
2005-07-26 12:21
2005.09.18
Комерчиское распространение и поддержка языков


4-1122018050
Denis
2005-07-22 11:40
2005.09.18
Можно ли динаически создать форму в чужом приложении?


6-1117302414
Grief
2005-05-28 21:46
2005.09.18
передача по LAn


4-1122539982
fixer
2005-07-28 12:39
2005.09.18
проблемка с Popupmenu


3-1123231655
Elvis
2005-08-05 12:47
2005.09.18
DBGridEh забитый в ручную




   Наверх