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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.10.2012, 06:35
Аватар для Erilar
Erilar Erilar вне форума
Новичок
 
Регистрация: 30.03.2011
Сообщения: 91
Версия Delphi: 7
Репутация: 10
Вопрос Запустить с параметрами

Как запустить установочную программу с параметрами?
Например: Если просто открыть файл "SetupWinRar.exe", то он запуститься с вопросом в какую директорию установить прогу, а если запустить через командную строку так: "START SetupWinRar.exe \S", то она установится сама в фоновом режиме. Как сделать это в делфи?
__________________
Если программа даёт неверный результат - в ней ошибка. Если же результат правильный - ошибок, как минимум, две.
Ответить с цитированием
  #2  
Старый 23.10.2012, 08:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
function ParamCount: Integer;
function ParamStr(Index: Integer): string;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 23.10.2012, 10:24
Аватар для Erilar
Erilar Erilar вне форума
Новичок
 
Регистрация: 30.03.2011
Сообщения: 91
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Код:
function ParamCount: Integer;
function ParamStr(Index: Integer): string;
Как это можно использовать? Можно сам код, пожалуйста.
__________________
Если программа даёт неверный результат - в ней ошибка. Если же результат правильный - ошибок, как минимум, две.
Ответить с цитированием
  #4  
Старый 23.10.2012, 10:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

в файле проекта первым делом проверять ParamStr(1). если он == '/s', то отображать форму не надо, а выполнять всю работу без окна.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 23.10.2012, 12:35
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Erilar
Как запустить установочную программу с параметрами?
Например: Если просто открыть файл "SetupWinRar.exe", то он запуститься с вопросом в какую директорию установить прогу, а если запустить через командную строку так: "START SetupWinRar.exe \S", то она установится сама в фоновом режиме. Как сделать это в делфи?
По-моему здесь необходимо уточнение вопроса.
Что требуется?:
  1. Сделать свою установочную программу которая в зависимости от переданных ей параметров будет по разному реагировать
  2. Запустить чужую программу (например установщик SetupWinRar.exe) с параметрами
Ответ на первый вариант дан выше, а для второго варианта используй CreateProcess, ShellExecute, WinExec.
Ответить с цитированием
  #6  
Старый 23.10.2012, 12:39
Аватар для Erilar
Erilar Erilar вне форума
Новичок
 
Регистрация: 30.03.2011
Сообщения: 91
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
По-моему здесь необходимо уточнение вопроса.
Что требуется?:
  1. Сделать свою установочную программу которая в зависимости от переданных ей параметров будет по разному реагировать
  2. Запустить чужую программу (например установщик SetupWinRar.exe) с параметрами
Ответ на первый вариант дан выше, а для второго варианта используй CreateProcess, ShellExecute, WinExec.
Запустить чужую программу.
__________________
Если программа даёт неверный результат - в ней ошибка. Если же результат правильный - ошибок, как минимум, две.
Ответить с цитированием
  #7  
Старый 23.10.2012, 12:42
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Erilar
Запустить чужую программу.
Пример через ShellExecute:
Код:
uses ... ShellAPI;
.....
ShellExecute(0, 'open', 'SetupWinRar.exe', '\S', nil, SW_NORMAL);
Ответить с цитированием
  #8  
Старый 23.10.2012, 12:59
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Вариант с ShellExecute я проверил - у меня работает. Единственно только для тихой установки WinRar-овских SFX архивов нужно использовать параметр '/S', а не '\S'.

Вот вариант через CreateProcess:
Код:
var
  SI: TStartupInfo;
  PI: TProcessInformation;
begin
  FillChar(SI, SizeOf(SI), 0);
  SI.cb := SizeOf(SI);

  if not CreateProcess(nil, 'SetupWinRar.exe /S', nil, nil, False, 0, nil, nil, SI, PI) then RaiseLastWin32Error();

  CloseHandle(PI.hProcess);
  CloseHandle(PI.hThread);
end;

p.s. Естественно путь к файлу "SetupWinRar.exe" должен быть известен. Иначе либо имя этого файла нужно указывать полностью с путём, либо устанавливать текущий путь к этому файлу с помощью SetCurrentDir.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Erilar (24.10.2012)
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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