본문 바로가기

프로그래밍/Delphi

작업관리자에만 나타나는 프로세스 강제로 종료하기

[출처 : http://www.delphi3000.com/articles/article_4324.asp?SK]

참고 --> TProcessEntry32 클래스는 TlHelp32.pas 유닛에 선언되어 있음

If you want to kill a process under windows 98, 2000,xp home or professional - use this function:
function KillTask(ExeFileName: 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(ExeFileName)) or 
         (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName)) 
        ) then 
      Result := 
        Integer( 
          TerminateProcess( 
            OpenProcess( 
              PROCESS_TERMINATE, 
              BOOL(0), 
              FProcessEntry32.th32ProcessID 
            ), 
            0 
          ) 
        ); 
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 
  end; 
  CloseHandle(FSnapshotHandle); 
end; 

best regards 
B.B.Wittfoth