![]() |
hThread von einem externen Programm?
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:
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!
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; mfg gandime |
Re: hThread von einem externen Programm?
Du darfst auch nicht and zum Verknüpfen benutzen... Du musst or benutzen.
|
Re: hThread von einem externen Programm?
oh stimmt und ich brauchte doch volle Thread Rechte^^
für die die es sich nicht noch etra raussuchen wollen:
Delphi-Quellcode:
Danke! War Gestern doch etwas spät^^
STANDARD_RIGHTS_REQUIRED = $F0000;
SYNCHRONIZE = $100000; THREAD_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3FF); |
Re: hThread von einem externen Programm?
Ich frae mich, wer diesen Quatsch mal angefangen hat:
Delphi-Quellcode:
Warum wird eine Boolean Variable benutzt, wenn sie dann doch nach Integer gecastet wird? Dieser Code wird ohne Sinn und Verstand immer und immer wieder kopiert.
while Integer(ContinueLoop) <> 0 do
Process32Next gibt einen BOOL zurück, warum also nicht:
Delphi-Quellcode:
while ContinueLoop do
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz