Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6

Программа, запускающая первую программу в качестве вновь созданного процесса

03.04.2015, 17:51. Показов 4119. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание:
Разработать две программы. Первая находит площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1<R2). В качестве значения Pi использовать 3.14.Радиусы R1 и R2 задаются пользователем.
Вторая программа запускает первую в качестве вновь созданного процесса.

Листинг программы, являющуюся дополнительным процессом. Программа "Нахождение площади кольца":
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
float r1,r2,S;
cout << " Enter the first r: " ; cin >> r1 ;
cout << " Enter the second r: " ;cin >> r2;
double pi = 3.14;
{
if (r1<r2)
          S=pi*r2*r2-pi*r1*r1;
          else
          cout << " error, because r1>r2 " ;
}
          cout << " S= " << S;
 getch();
}
Листинг программы, реализующая полученное задание (запуск процессов):
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <windows.h>
 
int main (){
STARTUPINFO si;
 
PROCESS_INFORMATION pi;
GetStartupInfo(&si);
system("Project1.exe");
 
  return 0;
 
}
При компиляции второй, загружается первая программа но ничего не выдает. Помогите разобраться. Обе программы в одной папке.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2015, 17:51
Ответы с готовыми решениями:

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

Запуск процесса с правами пользователя (запускающая программа работает с правами администратора)
Здравствуйте. Требуется выполнить действие, описанное в заголовке. Читал тему...

Запустить программу из другой программы в качестве нового процесса
Нужно запустить программу из другой программы: Первая программа, которую нужно запустить: #include &lt;iostream&gt; using namespace...

8
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
04.04.2015, 05:08
Программа нахождения площади (дополнительный процесс) - S_Ring.exe
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
   float r1,r2,S;
   cout << " Enter the first r: " ; cin >> r1 ;
   cout << " Enter the second r: " ;cin >> r2;
   double pi = 3.14;
   if (r1 < r2)
    {
      S = pi * r2 * r2 - pi * r1 * r1;
      cout << " S= " << S;
    }  
   else
    cout << "Error, because r1 > r2 " ;
   getch();
   return 0;
}
//---------------------------------------------------------------------------
Программа-запускашка - Launcher.exe
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <windows.h>
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
   cout << "Press R to run programm or press any other key to exit" << endl;
   char n = getch();
   if(n == 'R' || n == 'r')
    {
      SHELLEXECUTEINFO SEI = {0};
      SEI.cbSize = sizeof(SHELLEXECUTEINFO);
      SEI.fMask = SEE_MASK_NOCLOSEPROCESS;
      SEI.hwnd = NULL;
      SEI.lpVerb = "open";
      SEI.lpFile = "S_Ring.exe";
      SEI.lpParameters = NULL;
      SEI.lpDirectory = NULL;
      SEI.nShow = SW_SHOW;
      SEI.hInstApp = NULL;
      ShellExecuteEx(&SEI);
      WaitForSingleObject(SEI.hProcess, INFINITE);
      return 0;
    }
   cout << "Programm by closed";
   getch();
   return 1;
}
//---------------------------------------------------------------------------
При запуске Launcher.exe программа ждет, какую кнопку надавит пользователь. Если он надавил что-то, отличное от клавиши 'R' (или 'r') - программа завершается. При нажатии R - запускается программа S_Ring.exe, а сама запускашка ждет ее завершения. В этот момент на экране 2 консольных окна. После того, как площадь расчитана - обе программы закрываются.
Миниатюры
Программа, запускающая первую программу в качестве вновь созданного процесса  
1
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
04.04.2015, 19:45  [ТС]
Не срабатывает....
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
04.04.2015, 20:16
Цитата Сообщение от Catarina Посмотреть сообщение
Не срабатывает....
Подробнее...
У меня вот, почему-то срабатывает
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
04.04.2015, 20:21
Вот 2 скомпилированных из этих исходников ехе-шника. Проверьте, они-то работать будут?
Вложения
Тип файла: rar two_apps.rar (7.8 Кб, 23 просмотров)
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 6
04.04.2015, 20:44  [ТС]
Вот так срабатывает. Launcher.exe завершает работу,не загружает S_Ring.exe. И если включить S_Ring.exe отдельно , тоже не работает.....
???????
Миниатюры
Программа, запускающая первую программу в качестве вновь созданного процесса   Программа, запускающая первую программу в качестве вновь созданного процесса  
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
04.04.2015, 20:52
1. Какой язык стоит при запуске Launcher.exe? Нажать надо R, а не К
2. Права доступа на папку, откуда производится запуск? Программа S_Ring.exe прекрасно запускается отдельно.
2
0 / 0 / 0
Регистрация: 06.11.2011
Сообщений: 123
05.04.2015, 20:00
а можно закомментировать код запускашки, чтобы понять как это работает?
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
06.04.2015, 05:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cout << "Press R to run programm or press any other key to exit" << endl; //Выдаем подсказку, что надо делать
char n = getch(); //Считываем один символ с клавиатуры
if(n == 'R' || n == 'r') //Если нажата клавиша R
{
  SHELLEXECUTEINFO SEI = {0}; //Объявляем структуру типа SHELLEXECUTEINFO (прочитать о всех параметрах этой структуры можно в Help-е
  SEI.cbSize = sizeof(SHELLEXECUTEINFO);
  SEI.fMask = SEE_MASK_NOCLOSEPROCESS;
  SEI.hwnd = NULL;
  SEI.lpVerb = "open"; 
  SEI.lpFile = "S_Ring.exe"; //Программа, которую будем запускать
  SEI.lpParameters = NULL; //Параметры запуска программы
  SEI.lpDirectory = NULL; //Начальная директория
  SEI.nShow = SW_SHOW; //Вид окна
  SEI.hInstApp = NULL;
  ShellExecuteEx(&SEI); //Запускаем программу на основании параметров, заданых в структуре SEI
  WaitForSingleObject(SEI.hProcess, INFINITE); //Ждем завершения порожденного процесса
  return 0; //Выход с кодом 0
}
cout << "Programm by closed"; //Сообщаем о том, что программа будет закрыта
getch(); //Ждем нажатия любой клавиши
return 1; //Выход с кодом 1
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2015, 05:53
Помогаю со студенческими работами здесь

Add.Control. Как и где можно проставить индекс вновь созданного на форме объекта?
Подскажите кто-нить, пожалуйста. Как и где можно проставить индекс вновь созданного на форме объекта. Пишу: Set...

Составьте UNIX-программу на языке С, порождающую в качестве дочернего процесса свою копию и ожидающую ее завершения
Составьте UNIX-программу на языке С, порождающую в качестве дочернего процесса свою копию и ожидающую ее завершения. Кому не трудно,...

Составьте UNIX-программу на языке С, порождающую в качестве дочернего процесса свою копию и ожидающую ее завершения
Помогите решить пожалуйста. 1. Составьте UNIX-программу на языке С, порождающую в качестве дочернего процесса свою копию и ожидающую ее...

Программа, запускающая сама себя
Требуется, чтобы программа запустила сама себя. Использую: system(&quot;start programma.exe&quot;); Но при изменении названия файла такая функция...

Не компилируется программа, запускающая DLL-библиотеку
Здравствуйте. Я тут попыталась создать dllку, но все застопорилось на написании программы, которая собственно и будет эту самую dllку...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru