Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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. Отвечает эксперт: Градов Ю.М.

Здравствуйте, Матвеев Мефодий Олегович!
Посмотрите код, данный в приложении.

Приложение:
  1. ........
  2. procedure WinExec2(ProgramToStart: string; Params: string; Show: integer);
  3. public
  4. procedure WinExec2(ProgramToStart: string; Params: string; Show: integer);
  5. { Public declarations }
  6. end;
  7.  
  8. var
  9. Form1: TForm1;
  10.  
  11. implementation
  12.  
  13. {$R *.dfm}
  14.  
  15. { TForm1 }
  16.  
  17. procedure TForm1.WinExec2(ProgramToStart, Params: string; Show: integer);
  18. var StartupInfo: TStartupInfo;
  19. ProcessInfo: TProcessInformation;
  20. begin
  21. if Params='' then Params:=' ' else
  22. if Params[1]<>' ' then Params:=' '+Params;
  23. FillChar(StartupInfo, SizeOf(TStartupInfo),0);
  24. StartupInfo.cb:=SizeOf(TStartupInfo);
  25. StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
  26. StartupInfo.wShowWindow:=Show;
  27. if not (CreateProcess(PChar(ProgramToStart),PChar(Params), nil, nil, False,
  28. NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo, ProcessInfo)) then
  29. RaiseLastWin32Error;
  30.  
  31. end;
  32.  
  33. procedure TForm1.Button1Click(Sender: TObject);
  34. begin
  35. // WinExec2('c:windowsnotepad.exe','c:autoexec.bat', SW_SHOWNORMAL);
  36. WinExec2('c:windowsnotepad.exe','', SW_SHOWNORMAL);
  37. end;
  38.  
  39. end.
  40.  
  41.  


Ответ отправил: Градов Ю.М. (статус: 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)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.02 сек.