모든 스레드에서 실행되는이 코드가 있습니다. 시스템에서 실행중인 모든 스레드를 반복하지 않고도 내 자신의 프로세스에서만 스레드를 얻고 싶습니다.동일한 프로세스에서 스레드를 나열하는 방법은 무엇입니까?
var
SnapProcHandle: THandle;
NextProc : Boolean;
TThreadEntry : TThreadEntry32;
begin
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
Result := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Result then
try
TThreadEntry.dwSize := SizeOf(TThreadEntry);
NextProc := Thread32First(SnapProcHandle, TThreadEntry);
while NextProc do
begin
if TThreadEntry.th32OwnerProcessID = PID then
begin
Memo1.Lines.Add('Thread ID '+IntToStr(TThreadEntry.th32ThreadID));
Memo1.Lines.Add('base priority '+inttostr(TThreadEntry.tpBasePri));
Memo1.Lines.Add('delta priority '+inttostr(TThreadEntry.tpBasePri));
end;
NextProc := Thread32Next(SnapProcHandle, TThreadEntry);
end;
finally
CloseHandle(SnapProcHandle);
end;
end;
영어는 괜찮지 만 코드를 읽을 수 없습니다. 질문을 편집하고 코드 형식을 편집하는 데 도움을 받으십시오. 이 일을하는 데 시간을 보내십시오. 20 대 후에는 포기하지 마세요. –
dupes : http://stackoverflow.com/q/2055642/800214 및 http://stackoverflow.com/questions/3809708/running-threads-count – whosrdaddy
질문을 이해하는 것이 어렵고 코드와 관련된 내용을 이해하는 것도 어렵습니다. . 코드가 기대하는 바는 무엇입니까? 그것은 무엇을 하는가. –