Delphi 2007에서는 이름으로 프로세스를 종료하기 위해 아래 코드를 사용하고 있습니다. 작동하지만 현재 응용 프로그램 중 하나 인 이름으로 모든 프로세스를 종료하고 싶습니다. 내 목표는 내 앱의 모든 중복 프로세스를 닫고 현재 프로세스 만 실행하는 것입니다.
function closeProc(pname : string): integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ( UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = uppercase(pname)) then
begin
Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
열거하면, 비교 FProcessEntry32.th32ProcessID
에 대해 GetCurrentProcessId
. 이 값이 일치하면 열거하는 프로세스가 호출 프로세스이며 종료 코드를 건너 뛸 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다