Запустить .exe файлы c++

323
26 января 2017, 02:52

Подскажите, пожалуйста.Мне нужно создать 2 exe-файла: test1.exe и test2.exe. кладем в разные папки, пусть первый кладем в c:\home\test1.exe а второй в c:\work\test2.exe. пишем два текстовых файла:

test1.txt:
c:\home\test1.exe
c:\work\test2.exe
test2.txt:
c:\work\test2.exe
c:\home\test1.exe

затем пишем программу prog.exe которая принимает аргументом путь к одному из двух текстовых файлов. результаты работы такие:

prog.exe test1.txt: запуск сначала test1, затем test2
prog.exe test2.txt: запуск сначала test2, затем test1

Вопрос, как запустить .exe файлы с прочитанного текстового файла?

#include <iostream>
#include <fstream>
#include <process.h>

using namespace std;
int main(int argc, char *argv[]) {
    cout << "argc = " << argc << endl;
    for (int i = 0; i < argc; i++) {
        cout << "Argument: " << i << " = " << argv[i] << endl;
    }
    if (argc != 2) {
        cout << "Error" << endl;
        exit(-1);
    }
    char ch;
    ifstream infile;
    infile.open(argv[1]);
    if (!infile) {
        cout << "errrrror: cant open a file" << argv[1];
        exit(-1);
    }
    while (infile) {
        infile.get(ch);
        cout << ch;
    }
    cout << endl;
    system("pause");
    return 0;
}

Answer 1

Проще всего - system.

Сложнее - spawn....

Еще сложнее - использовать Windows API, типа CreateProcess.

Если я верно понял задаваемый вопрос, конечно...

P.S. Под сложнее одновременно имеется в виду "зато больше возможностей" :)

Answer 2

Если тебе не противно обмазываться не нужна кроссплаторменость, то можно использовать .Net класс Process

#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
Process^ myProcess = gcnew Process();
myProcess->StartInfo->FileName = "C:\\Program Files\\LibreOffice 5\\program\\soffice.exe";
myProcess->Start();

Можно так же попробовать ShellExecute

#include <Windows.h>
LPCTSTR path = L"C:\\Program Files\\LibreOffice 5\\program\\soffice.exe";
ShellExecute(NULL, L"open", path, NULL, NULL, SW_SHOWDEFAULT);
READ ALSO
Могут ли функции иметь один адрес?

Могут ли функции иметь один адрес?

В ответе говорится, что Open Watcom компилирует такой код

341
Как импортировать Sakila Database в phpMyAdmin?

Как импортировать Sakila Database в phpMyAdmin?

Когда импортирую через инструмент импорт, пишет что нет таблиц, либо они пустыеВозможно, кто-то сталкивался с такого рода импортом и сможет...

303
MYSQL - получить одинаковые значения из n запросов

MYSQL - получить одинаковые значения из n запросов

Есть N таблиц, N запросов: SELECT id FROM table_a WHERE value = '123', SELECT id FROM table_b WHERE value = '456', SELECT id FROM table_c WHERE value = '789', SELECT id FROM table_d WHERE value = '101112',

357