Как закрыть программу по имени ее файла?

Для того, чтобы завершить процесс по имени его исполняемого файла, можно воспользоваться следующей функцией на Delphi:

uses TLHelp32;
...
function CloseByExeName(ExeFilename: String): Integer;
var
  continueloop: Boolean;
  fsnapshothandle: THandle;
  fprocessentry32: TProcessEntry32;
const
  //константа для команды завершения процесса
  process_terminate=$0001;
begin
  Result := 0;
  //переводим имя файла в верхний регистр для сравнения
  ExeFilename = uppercase(ExeFilename);
  //получаем снимок работабщих в системе процессов
  fsnapshothandle := createtoolhelp32snapshot(th32cs_snapprocess,0);
  fprocessentry32.dwsize := sizeof(fprocessentry32);
  continueloop := process32first(fsnapshothandle,fprocessentry32);
  //перебираем процессы
  while integer(continueloop)<>0 do
  begin
    //если имя файла совпадает с искомым, то пробуем его завершить
    if ( ( uppercase( extractfilename( fprocessentry32.szexefile ) ) = ExeFilename ) OR
         ( uppercase( fprocessentry32.szexefile ) = ExeFilename) ) then
      Result := integer( terminateprocess( openprocess( process_terminate, bool(0), fprocessentry32.th32processid ), 0) );
    //берем следующий процесс
    continueloop := process32next(fsnapshothandle,fprocessentry32);
  end;
  closehandle(fsnapshothandle);
end;

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *