Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запустить exe-шник? 
:(
    Опции темы
DeMoNN
  Дата 1.4.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 21.3.2008

Репутация: 1
Всего: 2



Мне надо из проги запустить другую прогу(в формате exe)
Как это сделать? Уже несколько дней  smile  smile  smile . ни в какой литературе нет. Помогите!
PM MAIL ICQ   Вверх
lukas
Дата 1.4.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



WinExec

или

ShellExecute из модуля ShellAPI


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
DeMoNN
Дата 1.4.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 21.3.2008

Репутация: 1
Всего: 2



в смысле?
Код

WinExec(имя_проги);


Это сообщение отредактировал(а) DeMoNN - 1.4.2008, 19:11
PM MAIL ICQ   Вверх
lukas
Дата 1.4.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Код

uses ShellApi;
..
..
..
ShellExecute(0,'open',PChar(<путь к файлу>),'','',SW_SHOW);


Это сообщение отредактировал(а) lukas - 1.4.2008, 19:13


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
SandyProgrammer
Дата 1.4.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 26.3.2008

Репутация: нет
Всего: нет



Код

WinExec(Pchar('C:\windows\notepad.exe'),sw_Show);

PM MAIL   Вверх
Данкинг
Дата 1.4.2008, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Я ShellExecute юзаю. Только вот вопрос: а как приостановить выполнение основной программы (на дельфи) на время работы запущенной?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
THandle
Дата 1.4.2008, 20:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



А почему CreateProcess забыли назвать?


А вообще эта тема есть в интернете в таком количестве, что даже не верится что можно в течение нескольких дней не найти ответ.
PM   Вверх
lukas
Дата 2.4.2008, 17:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



CreateProcess не для новичков... лучший вариант это ShellExecute, еще советую перед открытием
делать следующее...

Код

ChDir(ExtractFileDir(Путь к проге));
ShellExecute...



--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
neweraser
Дата 6.4.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6



lukas, а что делает 
Код

ChDir(ExtractFileDir(Путь к проге));
?


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 6.4.2008, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(neweraser @ 7.4.2008,  00:21)
lukas, а что делает 
Код

ChDir(ExtractFileDir(Путь к проге));
?

Меняет текущий каталог на тот, в котором находится запускаемая прога.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
SlaUr
Дата 7.4.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 1
Всего: 5



Цитата

а как приостановить выполнение основной программы (на дельфи) на время работы запущенной?

Код

var codeexec:integer//Код выхода программы

Function Exec(Path,Params,WorkPath:string; Wait:Boolean; Runmode:integer):boolean;
{ Выполняет указанную программу с ожиданием ее завершения
  Path - полный путь доступа к файлу.
  Params - параметры
  WorkPath - текущий каталог. Если '' то тот же каталог где EXE
  Wait - ждать завершения программы ?
  RUNMODE - режим запуска (0 - по умолчанию SHOWNORMAL):
    SW_HIDE                Прячет окно и активизирует другое окно.
    SW_MAXIMIZE            Maximizes window.
    SW_MINIMIZE            Минимизирует определенное окно и активизирует следующее.
    SW_RESTORE             В нормальном окне
    SW_SHOW                Активирует окно в его текущем положении и размере
    SW_SHOWDEFAULT         Делает текущее положение нормальным ?
    SW_SHOWMAXIMIZED       Активизирует окно и расширяет его.
    SW_SHOWMINIMIZED       Активизирует окно и минимизирует его.
    SW_SHOWMINNOACTIVE     Минимизирует окно оставляя его активным.
    SW_SHOWNA              Отображает окно в своем текущем состоянии. Активное окно остается активным.
    SW_SHOWNOACTIVATE      Отображает окно в своем последнем размере и позиции. Активное окно остается активным.
    SW_SHOWNORMAL          Активизирует и отображает окно. Если окно минимизируется или расширяется,
                           то Окно восстанавливается в своем исходном размере и позиции.
                           Приложение должно определить этот флаг отображая окно в начале.
 


Function Exec(Path,Params,WorkPath:string; Wait:Boolean; Runmode:integer):boolean;
var
    startUpInfo : TStartupInfo;
    processInfo    : TProcessInformation;
    exeCmd      : string;
begin
  CodeExec:=0;
  result:=true;
  if Runmode=0 then Runmode:=SW_SHOWNORMAL;
  if WorkPath='' then WorkPath:=extractfilepath(path);
  if wait then begin
    if not FileExists(path) then begin result := false; exit; end;
    exeCmd := path + ' ' + params;
    FillChar(startUpInfo, SizeOf(startUpInfo), Chr(0));
         StartUpInfo.cb := SizeOf( StartUpInfo );
         StartUpInfo.dwFlags     := STARTF_USESHOWWINDOW;
         StartUpInfo.wShowWindow := runmode;
    if not CreateProcess(
             nil, PChar(exeCmd), nil, nil, false,
             CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
             PChar(ExtractFilePath(path)), startUpInfo, processInfo)
    then result := false;
    WaitForSingleObject(processInfo.hProcess, INFINITE);
    GetExitCodeProcess(processInfo.hProcess, CodeExec);
  end else
    result:=ShellExecute(Application.Handle,'open',pchar(path),pchar(params),
                         pchar(WorkPath),RunMode)>32;
end; 



//если параметр wait установить в TRUE то ваша программа будет ждать завершения работы внешней программы.





PM MAIL   Вверх
Данкинг
Дата 8.4.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(SlaUr @ 7.4.2008,  12:54)
Function Exec(Path,Params,WorkPath:string; Wait:Boolean; Runmode:integer):boolean;

Во, спасибо, при случае заюзаю.  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.