Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
fantaz1
33 / 25 / 1
Регистрация: 08.11.2008
Сообщений: 107
#1

Запуск файла - C++

13.03.2010, 19:36. Просмотров 2555. Ответов 18
Метки нет (Все метки)

Подскажите пожалуйста, как запустить .exe файл с консольного приложения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2010, 19:36     Запуск файла
Посмотрите здесь:

c++, запуск файла - C++
Интересует как в с++ запустить другой файл и передать ему управление? После запуска файла программа должна закрыться.

запуск файла - C++
народ написал вот такую прогу но незнаю как сделать чтоб открывал файл путь к которому я напишу //Это праграмма которая проверяет код и...

Запуск исполняемого файла - C++
Как запустить исполняемый exe файл с параметрами в командной строке чтобы исполняемый файл отрабатывал по пути указанному в командной строке

Запуск файла из С++ программы - C++
Добрый вечер, Разными способами пробовал запустить файлы, зная точно, где они лежат. Теперь понадобилось запускать по пути, который...

Запуск bat файла - C++
Возможно ли написать программу которая запускает bat файл.

Запуск внешнего файла - C++
Добрый день, товарищи. Задача такая: на форме листбокс и кнопка, в листбоксе список файлов, по тыку на кнопку выбранный должен запускаться....

Запуск файла BAT - C++
Какой код bat писать чтобы батник запустил файл по ссылке c:\1.txt

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
13.03.2010, 21:08     Запуск файла #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "my.hpp"
 
using namespace std;
 
inline bool check(int &a) { return (a > 0 && a < 4); }
 
int main()
{
    int key;
    do 
    {
        system("cls");        
        cout <<    "Виберiть дiю:\n\n"
                    "1 - переведення чисел з однiєї системи числення в iншу;\n\n"
                    "2 - переведення суми, рiзницi, добутку та цiлої частини вiд дiлення двох чисел в прямий, обернений та доповняльний коди;\n\n"
                    "3 - вийти.\n";
        while ( !check(key = getch()-'0') ) { cin.clear(); cout << "\nПомилка введення\tспробуйте ще раз: "; }
        if (key == 1){system("cls"); system("a_in_b.exe");}
        if (key == 2){system("cls"); system("bynary.exe");}
        if (key == 3){system("cls"); cout << "завершення.."; Sleep(tSleep);}
    }
    while (key != 3);    
}
Добавлено через 2 минуты
я так делал
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 21:26     Запуск файла #3
fantaz1, если в Windows то можно с помощью ShellExecute.
outoftime
13.03.2010, 21:35
  #4

Не по теме:

CyBOSSeR, так ведь с консольного приложения..

CyBOSSeR
13.03.2010, 21:40
  #5

Не по теме:

Цитата Сообщение от outoftime Посмотреть сообщение

Не по теме:

CyBOSSeR, так ведь с консольного приложения..

А что тебе мешает вызывать Win32 API функции из консольного приложения?

outoftime
13.03.2010, 22:02
  #6

Не по теме:

Цитата Сообщение от CyBOSSeR Посмотреть сообщение

Не по теме:

А что тебе мешает вызывать Win32 API функции из консольного приложения?

Изврат

CyBOSSeR
13.03.2010, 22:15
  #7

Не по теме:

Цитата Сообщение от outoftime Посмотреть сообщение

Не по теме:


Изврат

Как мне тогда, например, удалить/скопировать/переместить файл? Или создавать/управлять потоками?
Никакого изврата в использовании Win32 API функций в консольных приложений нет. Есть задачи решить которые без них не удастся вообще.

Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
13.03.2010, 23:13     Запуск файла #8
Есть такое семейство функций spawn (и Си и Си++)
Самое простое
C
1
2
#include <process.h>
spawnl(P_WAIT, file.exe, NULL);
Это если ждать пока file.exe отработает
А чтоб не ждать - P_NOWAIT
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
14.03.2010, 07:32     Запуск файла #9
Хе...
Считаю system ("fail.exe"), реализованного outoftime, хорошим вариантом.

...А вот, ктати, вариант с использованием API-функций из консольного приложения. Что тут извратного- ума не приложу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <windows.h>
 
int main() {
 STARTUPINFO si;
 PROCESS_INFORMATION pi;
 ZeroMemory(&si,sizeof(STARTUPINFO) );
 
 if (CreateProcess ("messagebox.exe", 0, 0, 0, 0, 0, 0, 0, &si, &pi)) { 
 
 //Почему необходимо закрывать описатель потока- смотри у Джефри Рихтера в главе четвёртой, где-то в конце
  CloseHandle( pi.hThread );
 }
 else {
  printf ("protsessne sozdan");
 }
 return 0;
}
messagebox.exe- запускаемый файл. О путях к нему тс, надеюсь позаботится сам.
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
14.03.2010, 09:55     Запуск файла #10
Изврат в том, что консоль - это консоль, когда вы пишите под консоль нужно юзать консольные функции, к примеру, кто знает как вызвать другой *.ехе файл на выполнение на чистом си ??

А ведь это как-то раньше делали и без WinApi.. Или вы хотите сказать что функции WinApi быстрее? Лично я так не думаю, просто мне кажется что знать как это делалось раньше - нужно. Потому как создается эффект будто мы с вами тупее тех кто сидел за клавой в то время когда си был на пике популярности..
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
14.03.2010, 10:37     Запуск файла #11
Цитата Сообщение от outoftime Посмотреть сообщение
Изврат в том, что консоль - это консоль, когда вы пишите под консоль нужно юзать консольные функции
Ну, если Вы говорите, что когда мы пишем под консоль, нужно юзать консольные функции, остаётся только развести руками. Остаётся верить, что тс всё же найдёт время и ознакомится со способом, предложенном мной. Добавлю лишь, что CreateProcess все эти 10 параметров зачем-то принимает и каждый что-то да значит. Не просто так.

Что касаемо
Цитата Сообщение от outoftime Посмотреть сообщение
кто знает как вызвать другой *.ехе файл на выполнение на чистом си ??
я бы просто обратился к его отцам основателям и прочёл в главе 7.8.4 "функция system (char*) выполняеткоманду, содержащуюся в символьной строке s? а затем... далее по тексту."

То есть ответ на Ваш вопрос уже дан Вами. Хотя, допускаю, что существует какое-то ДРУГОЕ стандартное решение (в смысле прописанное в стандарте)

Цитата Сообщение от outoftime Посмотреть сообщение
Или вы хотите сказать что функции WinApi быстрее?
Ну, как Вам сказать... На счёт исполнения не знаю, а компиляция быстрее. Ненамного, конечно, но быстрее.
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
14.03.2010, 10:48     Запуск файла #12
А на пост #8 никто внимания не обратил.
Уж что может проще и надежнее и универсальнее.
В nix-ах тоже прекрасно работает (оттуда и пошло)
А есть еще функция execl, только она убивает процесс, ее вызвавший
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
14.03.2010, 10:58     Запуск файла #13
Ну тут даже и сказать нечего... Если я знаю две сущности, я на третью не обращу внимания, разве если меня убедят, что именно spawnl круто. (Хотя что там эдакого, ума не приложу. Создаёт процесс да создаёт себе. Не вникал особо) А вот тс пусть ознакамливается.
fantaz1
33 / 25 / 1
Регистрация: 08.11.2008
Сообщений: 107
14.03.2010, 19:27  [ТС]     Запуск файла #14
Спасибо всем за ответы!) Использывал system("");
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2010, 19:54     Запуск файла
Еще ссылки по теме:

WinExec, запуск batch файла - C++
Все привет. Делаю так: WinExec(&quot;Register.bat&quot;, SW_SHOW); результат 33, т.е. больше чем 31 =&gt; все ок. содержимое bat файла ...

Запуск файла через cmd - C++
При открытие exe файла этой программы через cmd выводится &quot;False&quot;, значит программе не удаётся открыть нужный файл. Если запускать через...

Запуск .ехе-шного файла - C++
Как запустить имеющийся .ехе-шный файл средствами С++?

Запуск .bat файла из программы - C++
Здравствуйте! Возможно ли запустить .bat-файл из консольной программы на С++? И если да, то как это можно сделать? В общем, мне нужно...

Скрытый запуск exe файла - C++
Мне нужно запустить exe так, чтобы окно не появилось, но программа работала (как бы в фоне). Создал Win32 приложение (пустое). Делал...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
14.03.2010, 19:54     Запуск файла #15
Цитата Сообщение от Day Посмотреть сообщение
В nix-ах тоже прекрасно работает (оттуда и пошло)
При всём уважении - у меня ни в линуксе, ни во фре не то, чтоб этого самого spawnl(), и самого process.h нету! На работе ещё макось есть, но думаю - и там не найдётся. Сдаётся мне - это сугубо виндозная заморочка...
Yandex
Объявления
14.03.2010, 19:54     Запуск файла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru