use different api?
http://undocumented.ntinternals.net/...extThread.html
NtSetContextThread
Code:
function NtSetContextThread(ThreadHandle : THandle; Context : PCONTEXT): NTSTATUS; stdcall; external 'ntdll';
edit: i just realised the SetThreadContext api isnt dynamically loaded. perhaps you need full example on how to do this:
Code:
program Example;
uses
Windows, SysUtils, Dialogs;
const
sGetEnvironmentVariableA : PAnsiChar = 'GetEnvironmentVariableA';
sKernel32 : PAnsiChar = 'Kernel32.dll';
lpName : AnsiString = 'TMP';
type
TGetEnvironmentVariableA =
function (lpName: PAnsiChar; lpBuffer: PAnsiChar; nSize: DWORD): DWORD; stdcall;
var
hKernel32 : Cardinal;
xGetEnvironmentVariableA : TGetEnvironmentVariableA;
lpBuffer : AnsiString;
dwSize: DWORD;
begin
hKernel32 := GetModuleHandleA(sKernel32);
@xGetEnvironmentVariableA := GetProcAddress(hKernel32, sGetEnvironmentVariableA);
if Assigned(xGetEnvironmentVariableA) then
begin
dwSize := {x}GetEnvironmentVariableA(PAnsiChar(lpName), nil, 0);
if dwSize > 0 then
begin
SetLength(lpBuffer, dwSize - 1);
xGetEnvironmentVariableA(PAnsiChar(lpName), PAnsiChar(lpBuffer), dwSize);
ShowMessage(lpBuffer);
end;
end;
end.