Для того, чтобы завершить процесс по имени его исполняемого файла, можно воспользоваться следующей функцией на 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;