DLL : récupérer des string/PChar...
bonjour,
je n'arrive pas a récupérer des strings depuis une de mes dll.
j'ai tout essayé, PChar, ShortString... et je bloque :?
voici le code de ma dll:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| library Project1;
uses
SysUtils,
Classes,
Windows;
{$R *.RES}
function getnameuser: string; StdCall;
const
cnMaxUserNameLen = 254;
var
sUserName: string;
dwUserNameLen: DWORD;
begin
dwUserNameLen := cnMaxUserNameLen - 1;
SetLength(sUserName, cnMaxUserNameLen);
GetUserName(PChar(sUserName), dwUserNameLen);
SetLength(sUserName, dwUserNameLen);
Result := sUserName;
end;
function messtrg: PChar; StdCall;
var
str1, str2: string;
begin
str1 := ('username : ' + getnameuser);
str2 := ('salut! ');
result := PChar(str1);
end;
exports
getnameuser,
messtrg;
begin
end. |
et de mon exe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| procedure TForm1.Button1Click(Sender: TObject);
Type TMonmesstrg = procedure;
Var
Hdle : THandle;
messtrg: TMonmesstrg;
begin
Hdle:=LoadLibrary(PChar('C:\test.dll')); //Charge la DLL
@messtrg:=GetProcAddress(Hdle,'messtrg'); //Récupère l'adresse de la procedure
messtrg; //Appelle la procedure "messtrg"
FreeLibrary(Hdle); //Libère la DLL
end; |
j'ai essayé des 15 façons différentes sans succès,
ce que je voudrai c'est récupérer str1 et str2 en appelant messtrg.
merci d'avance