如何在c ++程序中调用.exe文件?

时间:2011-03-01 14:05:06

标签: c++

我想在我的C ++程序中使用exe文件(convert.exe)。这个“exe”文件将我的输出文件格式更改为另一种格式。什么时候,我从我的命令提示符(cmd)使用这个convert.exe,我必须这样输入;

转换-in myfile -out convertedfile -n -e -h

其中;

myfile =文件名,我从我的c ++程序中获取 convertedfile =“convert.exe”文件的结果 -n,-e,-h =是我需要用来获取输出文件的一些参数(列)                所需的数据列。

我尝试使用system(convert.exe)。但是,它不起作用,因为我不知道如何使用所有这些参数。

5 个答案:

答案 0 :(得分:14)

std::system函数需要const char *,所以你试试

system("convert -in myfile -out convertedfile -n -e -h")

然后,如果你想要更灵活,你可以使用std::sprintf创建一个包含正确元素的字符串,然后将其传递给system()函数,如下所示:

// create a string, i.e. an array  of 50 char
char command[50];  

// this will 'fill' the string command with the right stuff,
// assuming myFile and convertedFile are strings themselves
sprintf (command, "convert -in %s -out %s -n -e -h", myFile, convertedFile);   

// system call
system(command);

答案 1 :(得分:4)

查看ShellExecute function

ShellExecute(NULL, "open", "<fully_qualified_path_to_executable>\convert.exe", 
                           "-in myfile -out convertedfile -n -e -h", 
                           NULL, SW_SHOWNORMAL);

答案 2 :(得分:2)

您可以使用Win32 API CreateProcess

答案 3 :(得分:1)

使用以下其中一项:

int execl(char * pathname, char * arg0, arg1, ..., argn, NULL);
int execle(char * pathname, char * arg0, arg1,..., argn, NULL, char ** envp);
int execlp(char * pathname, char * arg0, arg1,..., argn, NULL);
int execlpe(char *  pathname, char * arg0, arg1,..., argn, NULL, char ** envp);int execv(char * pathname, char * argv[]);
int execve(char * pathname, char * argv[], char ** envp);
int execvp(char * pathname, char * argv[]);
int execvpe(char * pathname, char * argv[],char ** envp);

exec() family of functions creates a new process image from a regular, executable file...

答案 4 :(得分:1)

系统(命令);来自stdlib.h

既然你不希望并行执行,那么对使用system()的高管连续三次调用是否适用于你?