Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Подскажите пожалуйста, как запустить .exe файл с консольного приложения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2010, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск файла (C++):

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

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

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

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

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

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

18
outoftime
║XLR8║
511 / 433 / 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 минуты
я так делал
1
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 21:26 #3
fantaz1, если в Windows то можно с помощью ShellExecute.
1
outoftime
13.03.2010, 21:35
  #4

Не по теме:

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

0
CyBOSSeR
13.03.2010, 21:40
  #5

Не по теме:

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

Не по теме:

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

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

1
outoftime
13.03.2010, 22:02
  #6

Не по теме:

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

Не по теме:

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

Изврат

0
CyBOSSeR
13.03.2010, 22:15
  #7

Не по теме:

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

Не по теме:


Изврат

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

0
Day
1158 / 963 / 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
2
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
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- запускаемый файл. О путях к нему тс, надеюсь позаботится сам.
1
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
14.03.2010, 09:55 #10
Изврат в том, что консоль - это консоль, когда вы пишите под консоль нужно юзать консольные функции, к примеру, кто знает как вызвать другой *.ехе файл на выполнение на чистом си ??

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

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

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

Цитата Сообщение от outoftime Посмотреть сообщение
Или вы хотите сказать что функции WinApi быстрее?
Ну, как Вам сказать... На счёт исполнения не знаю, а компиляция быстрее. Ненамного, конечно, но быстрее.
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
14.03.2010, 10:48 #12
А на пост #8 никто внимания не обратил.
Уж что может проще и надежнее и универсальнее.
В nix-ах тоже прекрасно работает (оттуда и пошло)
А есть еще функция execl, только она убивает процесс, ее вызвавший
0
kravam
быдлокодер
1702 / 889 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
14.03.2010, 10:58 #13
Ну тут даже и сказать нечего... Если я знаю две сущности, я на третью не обращу внимания, разве если меня убедят, что именно spawnl круто. (Хотя что там эдакого, ума не приложу. Создаёт процесс да создаёт себе. Не вникал особо) А вот тс пусть ознакамливается.
0
fantaz1
33 / 25 / 1
Регистрация: 08.11.2008
Сообщений: 107
14.03.2010, 19:27  [ТС] #14
Спасибо всем за ответы!) Использывал system("");
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
14.03.2010, 19:54 #15
Цитата Сообщение от Day Посмотреть сообщение
В nix-ах тоже прекрасно работает (оттуда и пошло)
При всём уважении - у меня ни в линуксе, ни во фре не то, чтоб этого самого spawnl(), и самого process.h нету! На работе ещё макось есть, но думаю - и там не найдётся. Сдаётся мне - это сугубо виндозная заморочка...
2
14.03.2010, 19:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2010, 19:54
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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