Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #4  
Старый 25.01.2010, 09:41
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Я архивировал через rar.exe (консольный rar)
И с помощью функции ExecOSCommand передавал нужные параметры
сама функция:
Код:
function ExecOSCommand(
  CommandStr : string;
  Show : Integer;
  WaitForComplete,
  IsInternalCommand : Boolean
) : THandle;
var
  PTemp : array [0..100] of char;
  PCommand : array [0..1000] of char;

  SInfo : TStartupInfo;
  PInfo : TProcessInformation;
  tmpExitCode : DWORD;
begin
//
// Из переменных окружения вытягиваем имя командного процессора
//   и строим команду
//
  if IsInternalCommand then begin
    StrPCopy(PTemp, 'COMSPEC');
    GetEnvironmentVariable(PTemp, PCommand, SizeOf(PCommand));
    StrCat(PCommand, ' /C ');
    StrPCopy(PCommand + StrLen(PCommand), CommandStr);
  end
  else
    StrPCopy(PCommand, CommandStr);
//
// Исполняем команду
//
  FillChar(SInfo, SizeOf(SInfo), 0);
  SInfo.cb := SizeOf(SInfo);
  SInfo.dwFlags := STARTF_USESHOWWINDOW;
  SInfo.wShowWindow := Show;

  if not CreateProcess(nil, PCommand, nil, nil, FALSE,
    0, nil, nil, SInfo, PInfo) then
    raise ECitCmdNotStarted.Create('Невозможно выполнить команду ''' +
      CommandStr + '''');
  try
    if WaitForComplete then
    begin
      //
      // Ожидаем завершения
      //
      WaitForSingleObject(PInfo.hProcess, INFINITE);
      GetExitCodeProcess(PInfo.hProcess, tmpExitCode);

      if tmpExitCode <> 0 then
        raise ECitNonzeroExitCode.Create(' Команда ''' + CommandStr + ''''#10#13 +
                               ' имеет ошибочный код возврата :'+ IntToStr(tmpExitCode));
    end;
  finally
    //
    // Чистим за собой
    //
    CloseHandle(PInfo.hThread);
    CloseHandle(PInfo.hProcess);
  end;
Ответить с цитированием
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025