在使用PATH C ++后运行.exe

时间:2017-01-24 14:50:45

标签: c++ windows exe

你能帮帮我吗?我需要运行.exe的文件类型。我有两个test1.txttest2.txt个文件,在这些文件中有两个 PATHes pr1.exe pr2.exe < / strong>即可。但是在第一个txt文件中我运行 pr1.exe pr2.exe ,在另一个文件中有 pr2.exe pr1 .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;
}

例如:我编写了test1.txt的路径,它打印了 pr1.exe pr2.exe 的两个路径,它们如下:

  

&#34; C:\ Users \ N \ Desktop \ process \ 2d文件\ Debug \ 2d file.exe&#34;

     

&#34; C:\ Users \ N \ Desktop \ process \第一个文件\ Debug \ the 1st file.exe&#34;

你能告诉我如何运行它们吗?

1 个答案:

答案 0 :(得分:0)

您正在寻找的是CreateProcess功能,可在msdn找到更多信息:

    // start the program up
    #include "windows.h"

    std::wstring("pr1.exe");
    STARTUPINFO si;     
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    if(!CreateProcess(NULL, (LPWSTR)wstr.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
    {
           //error
    }

    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );

注意:如果您没有向程序发送任何命令行参数,您也可以交换第一个和第二个参数。