Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для Dj Programmer
14 / 14 / 14
Регистрация: 05.10.2013
Сообщений: 141

Закрыть программу после запуска другого exe ( программно)

27.11.2013, 02:15. Показов 3209. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, что нужно дописать , чтобы после запуска приложения методами паскаля (exec) консоль паскаля закрывалась ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2013, 02:15
Ответы с готовыми решениями:

Закрыть картинку после запуска
Как закрыть картинку после запуска? пример кода: uses crt; begin exec('C:\Путь\картинка.jpg'); end. как сделать так,что...

Как программно закрыть программу?
Как программно закрыть программу?

После запуска program.exe ничего не происходит, то есть program.exe запустилась, а дальше код не выполняется
int main() { system(""C:\\Program Files (X86)\\Files\\program.exe""); cout << "Hi" << endl; return 0; } VS...

4
 Аватар для Dj Programmer
14 / 14 / 14
Регистрация: 05.10.2013
Сообщений: 141
07.12.2013, 16:29  [ТС]
Подскажите пожалуйста как такое реализовать . Вот есть код :
Pascal
1
2
3
4
5
6
7
8
{$M 16384,0,0}
 
uses crt,dos;
var a,b:string;
begin 
    a:= 'Project1.exe';
    exec (a,b);
    end.
Мне нужно после запуска приложения Project1.exe , закрыть консоль паскаля . Буду признателен за помощь.
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.12.2013, 21:02
Если не придумывать что-то очень замудрёное и не лезть в системные вопросы, то видимо, без командного файла не обойтись...
DOS - однозадачная среда. В ней в одно время может выполняться только одна программа. Другие программы могут начать работать, если текущая программа завершит свою работу, либо передаст им управление - через вызов Exec(). Exec() выполняется синхронно, т. е., управление перейдёт к следующему оператору, только когда завершится вызванная программа.
Для решения можно использовать командный файл (*.bat или *.cmd). В этом случае план будет такой. Составим командный файл, который сначала запустит программу Prog1.exe. Затем, когда произойдёт выход из программы Prog1.exe, будет проанализирован код, который она вернула в систему (код возврата). Если этот код окажется большим или равным 100, то будет запущена программа Prog2.exe.

Пишем:

Файл Start.bat:
Code
1
2
3
4
5
6
7
::Отключаем режим распечатки команд.
echo off
::Запуск программы Prog1.exe.
Prog1.exe
::Проверка кода возврата, который вернула программа Prog1.exe.
::Если код возврата оказался больше или равен 100, то запускаем Prog2.exe.
if errorlevel 100 (Prog2.exe)
Файл Prog1.pas:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
program Prog1;
 
var
  Ch : Char;
begin
  Writeln('----------');
  Writeln('Сейчас выполняется программа Prog1.exe.');
  Write('Запустить Prog2.exe? y/n: ');
  Readln(Ch);
  if Ch in ['Д', 'д', 'Y', 'y'] then
    Halt(100); {Завершаем программу и передаём в систему код возврата = 100.}
 
  Writeln('Запуск программы Prog2.exe отменён.');
  Writeln('Для выхода нажмите Enter.');
  Readln;
  
  {При завершении программы обычным способом в систему передаётся код возврата = 0.}
  
end.
Файл Prog2.pas:
Pascal
1
2
3
4
5
6
7
8
program Prog2;
 
begin
  Writeln('----------');
  Writeln('Сейчас выполняется программа Prog2.exe.');
  Writeln('Для выхода нажмите Enter.');
  Readln;
end.
Затем компилируем, получаем Prog1.exe и Prog2.exe. Запускаем командный файл Start.bat.
Получим следующее:
1. Если в диалоге пользователь принял решение запустить Prog2.exe:
Code
1
2
3
4
5
6
7
F:\Proj\Cyber\0000-Temp\01>echo off
----------
Сейчас выполняется программа Prog1.exe.
Запустить Prog2.exe? y/n: y
----------
Сейчас выполняется программа Prog2.exe.
Для выхода нажмите Enter.
2. Если в диалоге пользователь отказался от запуска Prog2.exe:
Code
1
2
3
4
5
6
F:\Proj\Cyber\0000-Temp\01>echo off
----------
Сейчас выполняется программа Prog1.exe.
Запустить Prog2.exe? y/n: n
Запуск программы Prog2.exe отменён.
Для выхода нажмите Enter.
2
 Аватар для Dj Programmer
14 / 14 / 14
Регистрация: 05.10.2013
Сообщений: 141
08.12.2013, 11:40  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
Если этот код окажется большим или равным 100
как я понял код возврата мы можем указать любой ? Например большим или равным 400.
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
08.12.2013, 11:49
Да, код возврата - любое целое число с 2 байтами во внутреннем представлении. В Borland/Turbo Pascal это число соответствует типам: Integer или Word.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2013, 11:49
Помогаю со студенческими работами здесь

Как закрыть стороннюю программу программно?
Такая тема, есть программа которая открывает по нажатию кнопки презентацию (1.pptx) и есть 2 кнопка (закрыть) ну и нужно чтобы по нажатию...

Svchost.exe >100% ЦП после запуска
Возникла после перезагрузки. Сначала появляется 3 хоста по 30-35%, затем их становится больше. Нагрузка равномерная. Надеюсь логи...

После запуска .exe ничего не происходит
Скачал Asus Ai Suite 3 с сайта ASUS. При запуске AsusSetup.exe в папке с софтом - появляется подтверждение, что я точно хочу запустить...

Закрыть экземпляр Wscript.exe после выполнения скрипта
Как закрыть экземпляр Wscript.exe после выполнения скрипта? Доброго времени суток! Запускаю Outlook VBS скриптом. Почтовый клиент...

Как корректно закрыть собственную программу из другого процесса?
Имеется запущенная программа prog.exe: Нужно при запуске другой копии prog.exe с ключем /exit, проверить работает ли первая копия и в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
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. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru