| 
| 
 | Вопрос # 721/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты!Как из одного приложения запустить другое?Например в одной папке находятся 2 приложения df.exe и fds.exe как после нажатия кнопки в df.exe запустить fds.exe 
|  |   Вопрос задал: Аксион (статус: 4-ый класс)Вопрос отправлен: 10 июля 2007, 11:36
 Состояние вопроса: решён, ответов: 3.
 |  Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович Здравствуйте, Матвеев Мефодий Олегович!Здесь
 http://rusfaq.ru/info/question/44909
 в ответе подробный примерчик с описанием всего, что Вам надо
 
|  | Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)Время отправки: 10 июля 2007, 11:46
 Оценка за ответ: 5
 Комментарий к оценке: СПАСИБО КСТАТИ Я ТАМ ДАВНО ЗАРЕГИСТРИРОВАЛСЯ НО Delphi.int.ru Expert ЛУЧШЕ, НА rusfaq  ЕЩЁ ДЕНЬГИ ПЛАТИ.... |  Ответ #2. Отвечает эксперт: Градов Ю.М. Здравствуйте, Матвеев Мефодий Олегович!Посмотрите код, данный в приложении.
 Приложение:Переключить в обычный режим ........procedure WinExec2(ProgramToStart: string; Params: string; Show: integer);  publicprocedure WinExec2(ProgramToStart: string; Params: string; Show: integer);    { Public declarations }  end; var  Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.WinExec2(ProgramToStart, Params: string; Show: integer);var StartupInfo: TStartupInfo;    ProcessInfo: TProcessInformation;begin  if Params='' then Params:=' ' else  if Params[1]<>' ' then Params:=' '+Params;  FillChar(StartupInfo, SizeOf(TStartupInfo),0);  StartupInfo.cb:=SizeOf(TStartupInfo);  StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;  StartupInfo.wShowWindow:=Show;  if not (CreateProcess(PChar(ProgramToStart),PChar(Params), nil, nil, False,          NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo, ProcessInfo)) then          RaiseLastWin32Error; end; procedure TForm1.Button1Click(Sender: TObject);begin//  WinExec2('c:windowsnotepad.exe','c:autoexec.bat', SW_SHOWNORMAL);WinExec2('c:windowsnotepad.exe','', SW_SHOWNORMAL);end; end.  
|  | Ответ отправил: Градов Ю.М. (статус: 8-ой класс)Время отправки: 10 июля 2007, 20:56
 Оценка за ответ: 5
 |  Ответ #3. Отвечает эксперт: min@y™ Балин, я фигею от таких вопросов (если не сказать больше :). Не проще ли написать BAT-файл:
 @echo off
 df.exe
 fds.exe
 
 И положить его в ту же папку?
 
 Конечно, функции ShellExecute() и CreateProcess() никто не отменял, но... Ст0ит ли овчинка выделки??
 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 11 июля 2007, 08:21
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 10 июля 2007, 12:11; участников в обсуждении: 3. 
|   | Аксион (статус: 4-ый класс), 10 июля 2007, 11:57 [#1]:И КАК Я ПОНЯЛ НАДО ИСПОЛЬЗОВАТЬ CreateProcess(А ТУТ ПУТЬ К ЕХЕ) ВЕРНО? (МНЕ НЕ НАДО ЧТОБЫ ПРИЛОЖЕНИЕ ЖДАЛО ОКОНЧАНИЯ РАБОТЫ ДРУГОВА) |  
|   | Аксион (статус: 4-ый класс), 10 июля 2007, 12:01 [#2]:А НЕТ ТАМ ЕЩЕ ВСЯКИЕ АТРЕБУТЫ УКАЗЫВАТЬ НАДО А НЕТ МЕТОДА ПО ПРОЩЕ ЧТОБЫ ТОЛЬКО ПУТЬ К ФАЙЛУ? |  
|   | Ерёмин А.А. (статус: *Администратор), 10 июля 2007, 12:04 [#3]:Матвеев Мефодий Олегович:  Оформляйте, пожалуйста, свои сообщения так, чтобы их удобно было читать. Если будете игнорировать все замечания, последуют конкретные действия. |  
|   | Аксион (статус: 4-ый класс), 10 июля 2007, 12:10 [#4]:Извеняюсь я не заметил включённый Caps Lock |  
|   | Помфюк Владимир Степанович (статус: Абитуриент), 10 июля 2007, 12:11 [#5]:Да. Насчёт rusfaq - тут я лопухнулся - я просто "и там и тут" - иногда путаю, но здесь было что-то похожее. Чтобы не ждать - уберите строки:
 WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
 GetExitCodeProcess(ProcessInfo.hProcess,Result);
 
 Ещё есть ShellExecute или ShellExec - точно не помню, извините.
 |  31 января 2011, 19:23: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |