|
Вопрос # 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);
- public
- procedure 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|