Erstmal danke für die Antworten
Leider hilft mir das bei dem Grundproblem nicht viel weiter
Auch wenn ich es *sicher* mache, habe ich eine Verschiebung von 48Byte zwischen der Addr des PChar, die mir die .exe anzeigt und der, die mir die
DLL angibt:
Delphi-Quellcode:
type TGetWindowsDirectoryA =
function(lpBuffer : PChar; uSize : UINT): UINT;
stdcall;
procedure TForm1.Button3Click(Sender: TObject);
var
hLib: cardinal;
MyGetWindowsDirectoryA: TGetWindowsDirectoryA;
lpBuffer : PChar;
begin
hLib := LoadLibrary('
C:\DLL_Dynamisch_PChar\project1.dll');
// hLib := LoadLibrary('C:\windows\system32\kernel32.dll');
if hLib <> 0
then
begin
@MyGetWindowsDirectoryA := GetProcAddress(hLib, '
GetWindowsDirectoryA');
if not Assigned(MyGetWindowsDirectoryA)
then
begin
RaiseLastOSError;
exit;
end;
end
else
begin
RaiseLastOSError;
exit;
end;
GetMem(lpBuffer, 255);
Label1.Caption := Format ('
@lpBuffer:%p', [@lpBuffer]);
//Ergibt bei mir: 0012F614; DLL:0012F5E4
MyGetWindowsDirectoryA(lpBuffer, 255);
Label2.Caption := lpBuffer;
Freemem(lpBuffer);
end;
Woher kommt diese beknackte Verschiebung ?
Muss jetzt ins Bett, vielleicht träum ich ja von der Lösung, ansonsten (androh
) bin ich morgen früh wieder da...