Hier noch 2 Funktionen um die Umgebung, von welcher wir den Pointer haben, zu dumpen:
Delphi-Quellcode:
procedure DumpEnvironmentW(lpEnvironment: LPVOID);
var
Env: PWideChar;
begin
Env := lpEnvironment;
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
while(lstrlenW(Env) > 0) do
begin
Writeln(String(WideString(Env)));
Env := PWideChar(DWORD(Env) + DWORD(lstrlenW(Env) + 1) * DWORD(sizeof(Env^)));
end;
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;
procedure DumpEnvironmentA(lpEnvironment: LPVOID);
var
Env: PAnsiChar;
begin
Env := lpEnvironment;
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
while(lstrlenA(Env) > 0) do
begin
Writeln(String(Env));
Env := PAnsiChar(DWORD(Env) + DWORD(lstrlenA(Env) + 1) * DWORD(sizeof(Env^)));
end;
Writeln('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
end;
Wie sofort ersichtlich ist, dient eine für
ANSI- und die andere für
Unicode-Umgebungen!
EDIT: Anhang entfernt, bitte im nächsten Beitrag den Anhang beachten!