Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2010, 16:59   #1
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию завершение работы файла

Люди подскажите коротенький код для того чтобы удалить запущенный файл (ну или как закрыть его)
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 15.08.2010, 17:06   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Как открывали?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.08.2010, 17:18   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как закрыть процесс по имени?
есть в поиске.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.08.2010, 17:21   #4
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

А че за файло-то?Исполняемый или текст?
ZvEr_HaCkEr вне форума Ответить с цитированием
Старый 15.08.2010, 17:21   #5
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

FileClose(FileHandle);
DeleteFile(FileName);
FileHandle - файловая переменная
FileName - строковая путь к файлу

Последний раз редактировалось baster128; 15.08.2010 в 17:26.
baster128 вне форума Ответить с цитированием
Старый 15.08.2010, 20:14   #6
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

ни как не открывал. Вообще любой фаил в системе
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 15.08.2010, 20:29   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Вы задаете абстрактный вопрос. В зависимости от того, что Вы имели в виду будет отличаться ответ. Если Вы открыли файл при помощи Assign - кроем с помощью Close, Процессы открытых программ киляются при помощи TerminateProcess... и т.п. и т.д.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.08.2010, 20:33   #8
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

подошел вот этот вариант
Код:
//==================================================================
function GetLastErrorString: string;
var
  lz: Cardinal;
  lErr: array[0..512] of Char;
begin
  lz := GetLastError;
  FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, lz, 0, lErr, 512, nil);
  Result := string(lErr);
end;
//==================================================================
function GetProcessID(const AProcessName: string): DWord;
var
  lSnapHandle: THandle;
  lProcStruct: PROCESSENTRY32;
  lProcessName, lSnapProcessName: string;
  lOSVerInfo: TOSVersionInfo;
begin
  Result := INVALID_HANDLE_VALUE;
  lSnapHandle := CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
  if lSnapHandle = INVALID_HANDLE_VALUE then
    Exit;
  lProcStruct.dwSize := SizeOf(PROCESSENTRY32);
  lOSVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  GetVersionEx(lOSVerInfo);
  case lOSVerInfo.dwPlatformId of
    VER_PLATFORM_WIN32_WINDOWS: lProcessName := AProcessName;
    VER_PLATFORM_WIN32_NT: lProcessName := ExtractFileName(AProcessName);
  end;
  if Process32First(lSnapHandle, lProcStruct) then
  begin
    try
      repeat
        lSnapProcessName := lProcStruct.szExeFile;
        if AnsiUpperCase(lSnapProcessName) = AnsiUpperCase(lProcessName) then
        begin
          Result := lProcStruct.th32ProcessID;
          Break;
        end;
      until not Process32Next(lSnapHandle, lProcStruct);
    finally
      CloseHandle(lSnapHandle);
    end;
  end;
end;
//==================================================================
function KillProcess(const AProcessName: string): Boolean;
var
  lPID, lCurrentProcPID: DWord;
  lProcHandle: DWord;
begin
  Result := False;
  try
    lCurrentProcPID := GetCurrentProcessId;
    lPID := GetProcessID(AProcessName);
    if (lPID <> INVALID_HANDLE_VALUE) and (lCurrentProcPID <> lPID) then
    begin
      lProcHandle := OpenProcess(PROCESS_TERMINATE, False, lPID);
      Windows.TerminateProcess(lProcHandle, 0);
      WaitForSingleObject(lProcHandle, Infinite);
      CloseHandle(lProcHandle);
      Result := True;
    end;
  except
    raise EExternalException.Create(GetLastErrorString);
  end;
end;

Вызывал:
KillProcess(путь к программе);
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 15.08.2010, 20:33   #9
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

спасибо всем
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При завершение работы программы появляется окно Microsoft Visual C++ Debug Library TheWanderer Visual C++ 2 25.11.2008 00:27
Завершение работы чужой программы Viteef Win Api 12 24.09.2007 12:31
Винда ХР не хочет завершаться. Остается экран "Завершение работы компьютера" mitrandir Софт 7 12.06.2007 08:59
завершение работы оператора If Noor Общие вопросы C/C++ 1 14.03.2007 10:07