Hi,
ist es möglich ein hThread mit den rechten THREAD_GET_CONTEXT und THREAD_SET_CONTEXT von einem externen Programm in Delphi zu bekommen, ohne das man es selbst gestartet hat?
Wenn man einen Process mit CreateProcess() erstellt hat, hat man ja die guten ProcessInfo, in welchen auch die Thread-Informationen enthalten sind!
hab da mal was zusammen geschrieben^^
Delphi-Quellcode:
function OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwThreadId: DWORD): DWORD; stdcall;
external 'kernel32.dll';
const
THREAD_GET_CONTEXT = $0008;
THREAD_SET_CONTEXT = $0010;
THREAD_SUSPEND_RESUME = $0002;
function CheckProcess(ExeFileName: string; var hProcess:Cardinal; var hThread:Cardinal): boolean;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
TE32: TThreadEntry32;
begin
result:=false;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPTHREAD, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
begin
hProcess:=OpenProcess(PROCESS_ALL_ACCESS , false,FProcessEntry32.th32ProcessID);
TE32.dwSize := SizeOf(ThreadEntry32);
if not Thread32First(FSnapshotHandle, TE32) then RaiseLastWin32Error;
repeat
if TE32.th32OwnerProcessID = FProcessEntry32.th32ProcessID then
begin
hThread:=OpenThread(THREAD_GET_CONTEXT and THREAD_SET_CONTEXT, false,TE32.th32ThreadID);
if hThread<>0 then
begin
result:=true;
CloseHandle(FSnapshotHandle);
exit;
end;
end;
until not Thread32Next(FSnapshotHandle, TE32);
end;
ContinueLoop:=Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Blos wenn ich bei OpenThread() THREAD_GET_CONTEXT and THREAD_SET_CONTEXT als rechte eingebe bekomme ich keinen hThread... wenn ich blos einen der beiden rechte beantrage gibt es massig Threads die ich bekomme!
mfg
gandime