天天看点

Check, if a process is running

{ Check if a process from the task list is active. } 

uses TlHelp32; 

function processExists(exeFileName: string): Boolean; 

var 

  ContinueLoop: BOOL; 

  FSnapshotHandle: THandle; 

  FProcessEntry32: TProcessEntry32; 

begin 

  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 

  FProcessEntry32.dwSize := SizeOf(FProcessEntry32); 

  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 

  Result := False; 

  while Integer(ContinueLoop) <> 0 do 

  begin 

    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = 

      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = 

      UpperCase(ExeFileName))) then 

    begin 

      Result := True; 

    end; 

    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); 

  end; 

  CloseHandle(FSnapshotHandle); 

end; 

procedure TForm1.Button1Click(Sender: TObject); 

  if processExists('notepad.exe') then 

    ShowMessage('process is running') 

  else 

    ShowMessage('process not running'); 

end;

    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/08/20/862668.html,如需转载请自行联系原作者