다른 프로세스 메모리를 스캔하는 코드를 작성하고 있습니다. 그러나 그것은 여기서 질문이 아닙니다. 실행중인 프로세스를 나열하려면 Process32First/Process32Next를 사용하고 있습니다. 하지만 컴파일러 디버그 내부에서 실행하면 모든 프로세스 (시스템 프로세스와 같은 다른 사용자 포함)가 생성됩니다. 하지만 .exe를 실행하면 내 사용자 만 프로세스를 가져옵니다. 코드의 스트레치는 다음과 같습니다.Process32 다른 결과가
Handle:= CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
Struct.dwSize:=Sizeof(TProcessEntry32);
Process32First(Handle, Struct);
repeat
Memo2.Lines.Append(Struct.szExeFile);
MemStart:= 0;
PID:= Struct.th32ProcessID;
PIDHandle:= OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_OPERATION or
PROCESS_VM_READ, false, PID);
if OS64 = true then
begin
if IsProcWow64 then
begin
Proc32:= true;
end
else
Proc32:= false;
end;
if (Proc32 = true) and (POS(Struct.szExeFile, Application.ExeName) = 0) then
begin
Memo1.Lines.Append('Process:: '+Struct.szExeFile+' - Scanning');
CatchYa(Struct.szExeFile);
end;
CloseHandle(PIDHandle);
until (not Process32Next(Handle,Struct));
32 비트 만 필요하기 때문에 64 비트 프로세스를 확인할 수 있습니다.
다른 결과가 나오는 이유에 대한 질문입니다. 당신이 말하는 것을 잊었습니다. –