Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для Tarik20
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243

Запустить программу и подождать

20.05.2013, 20:50. Показов 4033. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как запустить программу и дождаться ее завершения?
Запускаю таким кодом:
C++
1
WinExec(FileName.c_str(),SW_HIDE);
.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2013, 20:50
Ответы с готовыми решениями:

Как заставить программу подождать?
Здравствуйте! Подскажите пожалуйста, есть ли способ, с помощью которого можно заставить программу подождать, пока запишется один файл,...

Запустить одну программу и по завершении её работы запустить другую программу
Ребят подскажите как можно организовать такое задание в cmd... запустить любую программу, и по её завершению любую другую (к примеру,...

Запустить программу, при ее успешном завершении запустить следующую
- запустить программу PRIM.exe, при успешном завершении запустить PRIM_1.exe, иначе выдать сообщение об аварийном завершении...

25
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
20.05.2013, 20:54
Через WinExec() -- никак, используйте CreateProcess() для запуска и WaitForSingleObject() для ожидания.
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 20:58
SW_HIDE или SW_SHOW ?
Подождать - это TTimer или более жестоко -
C++
1
sleep(/* колько ждать, в мсек, 1 сек = 1000 мсек */);
Гламурнее -
C++
1
ShellExecute()
0
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
20.05.2013, 21:00
Цитата Сообщение от LK Посмотреть сообщение
SW_HIDE или SW_SHOW ?
Подождать - это TTimer или более жестоко -
C++
1
sleep(/* колько ждать, в мсек, 1 сек = 1000 мсек */);
А для верности (вдруг программа не успеет завершиться), интервал установить в пару суток
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 21:09
ты это... не умничай... лучшей кодом помоги
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.05.2013, 21:25
Уже правильно, ответили чего мусолить ?
Цитата Сообщение от quwy Посмотреть сообщение
используйте CreateProcess() для запуска и WaitForSingleObject() для ожидания.
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от LK Посмотреть сообщение
sleep
При чем тут sleep() вообще не понятно..

0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
20.05.2013, 21:41
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 STARTUPINFO cif;
 ZeroMemory(&cif,sizeof(STARTUPINFO));
 PROCESS_INFORMATION pi;
 
 if (CreateProcess(TEXT("c:\\windows\\notepad.exe"),NULL,
        NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==true)
  {
   WaitForSingleObject(pi.hProcess, INFINITE);
 
   ShowMessage("Дождались!!!!");
 
   CloseHandle(pi.hProcess);
   CloseHandle(pi.hThread);
  }
Добавлено через 4 минуты
и не надо пару суток ждать
6
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
20.05.2013, 21:43
_Dimon_,
C
1
cif.cb = sizeof(cif);
1
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
20.05.2013, 21:50
Цитата Сообщение от quwy Посмотреть сообщение
cif.cb = sizeof(cif);
Хотя нет, AV получается
0
Native x86
Эксперт Hardware
 Аватар для quwy
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
20.05.2013, 21:53
_Dimon_, ???
Это же статическая структура, откуда AV при присвоении поля статической структуры может взяться?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 21:55
а здесь https://www.cyberforum.ru/post2217329.html работало
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
20.05.2013, 21:57
AV не при присвоении, а когда скормить указатель на эту структуру CreateProcess
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 22:02
а макрос TEXT зачем? и я не помню, он
C++
1
#include <tchar.h>
не хочет ?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
20.05.2013, 22:08
Цитата Сообщение от LK Посмотреть сообщение
а макрос TEXT зачем?
Чтоб не писать
C++
1
UnicodeString("c:\\windows\\notepad.exe").w_str()
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 22:10
это для какого билдера? 2009? 2010?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
20.05.2013, 22:13
ему #include <tchar.h> не надо, и так работает

Добавлено через 23 секунды
У меня XE3

Добавлено через 2 минуты
пользовался 2009, XE - XE3, но всегда писал UnicodeString("c:\\windows\\notepad.exe" ).w_str(), а потом где-то здесь на форуме нашел TEXT
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 22:21
RAD ХЕ
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
20.05.2013, 22:38
а у меня
[bcc32 Error] Unit1.cpp(48): E2034 Cannot convert 'char const[23]' to 'const wchar_t *'
[bcc32 Error] Unit1.cpp(48): E2342 Type mismatch in parameter 'lpApplicationName' (wanted 'const wchar_t *', got 'const char *')
но так
C++
1
L"c:\\windows\\notepad.exe"
нормально

Добавлено через 1 минуту
или так
C++
1
_T("c:\\windows\\notepad.exe")
Добавлено через 6 минут
все-таки в tchar.h
C++
1
2
3
4
#define __T(__x)          __x
#define _TEXT(__x)        __T(__x)
#define _T(__x)           __T(__x)
#define _TEOF           EOF
Добавлено через 1 минуту
но явно я его не подключаю, видно сам )))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
20.05.2013, 22:57
_TCHAR Mapping
1
 Аватар для Tarik20
21 / 22 / 5
Регистрация: 14.02.2013
Сообщений: 243
21.05.2013, 17:19  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 STARTUPINFO cif;
 ZeroMemory(&cif,sizeof(STARTUPINFO));
 PROCESS_INFORMATION pi;
 
 if (CreateProcess(TEXT("c:\\windows\\notepad.exe"),NULL,
        NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==true)
  {
   WaitForSingleObject(pi.hProcess, INFINITE);
 
   ShowMessage("Дождались!!!!");
 
   CloseHandle(pi.hProcess);
   CloseHandle(pi.hThread);
  }
Добавлено через 4 минуты
и не надо пару суток ждать
Мне нужно запускать с параметрами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2013, 17:19
Помогаю со студенческими работами здесь

Запустить программу в среде turbo delphi - воссоздать программу
Есть код программы. Нужно её запустить в среде turbo delphi - воссоздать программу. У кого получиться выложите пожалуйста экзешник. ...

Как заставить программу запустить другую программу
Как заставить программу запуститься в спрятанном режиме, чтобы её можно было найти только в Дистептчере задач во вкладке процессы и...

Как подождать ShellExecute?
Запускаю WinRar таким образом: //делит на указанные части procedure divisionFile(FileNameIn, FileNameOut: string; sizedivision:...

Стоит ли подождать Skylake
В скором времени планируется сборка нового компьютера (время терпит). Так вот как думают более осведомленные эксперты форума. Стоит ли...

Подождать завершения потока
В общем то я начинающий программист c++. Уже третий день сижу над решение задачи: Разработать переносимый (portable) класс ThreadPool....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru