Command line 在MFC应用程序中运行带2个参数的exe

Command line 在MFC应用程序中运行带2个参数的exe,command-line,mfc,Command Line,Mfc,我正在MFC应用程序中运行带有2个参数的exe。我怎样才能做到这一点 例如:sox.exe a.wav b.mp3 我需要在MFC应用程序中执行 提前感谢。如果MFC应用程序支持stdlib.h,则可以使用system()函数:使用要运行的命令创建一个C字符串,即“sox.exe a.wav b.mp3”,并将其用作system()函数的参数,如下所示: system("sox.exe a.wav b.mp3"); 转换名为track01.wav,track02.wav,…,的一组文件trac

我正在MFC应用程序中运行带有2个参数的exe。我怎样才能做到这一点

例如:sox.exe a.wav b.mp3 我需要在MFC应用程序中执行


提前感谢。

如果MFC应用程序支持
stdlib.h
,则可以使用
system()
函数:使用要运行的命令创建一个C字符串,即
“sox.exe a.wav b.mp3”
,并将其用作
system()
函数的参数,如下所示:

system("sox.exe a.wav b.mp3");
转换名为
track01.wav
track02.wav
,…,的一组文件
track99.wav
转换成
song01.mp3
song02.mp3

char command[100];
int i;

for (i=1;i<=99;i++)
{
  sprintf (command, "sox.exe track%.2d.wav song%.2d.mp3", i, i);
  system (command);
}
char命令[100];
int i;

对于(i=1;i做这件事的首选方法是使用。

请参阅CreateProcess函数。这是一种很难的方法。除非你必须使用,
ShellExecuteEx
CreateProcess
是正确的工具。@IInspectable我尊重地不同意。你不是简单地表达意见吗?首先,
ShellExecuteEx
要求您在调用线程上初始化COM。如果该线程恰好位于MTA中,则游戏已经结束。至少可以说,它报告错误的方式令人困惑。如果您在加载程序锁下运行
ShellExecuteEx
,则会出现即时死锁。
CreateProcess不存在这些问题
。这些都是事实,而不是观点。这是我的最后一句话,因为我不想讨论解决方案的优点。虽然提出了一些有趣的观点,但如果我没有指出在这个问题的上下文中,COM“甚至可能不需要”第节是一个有趣的部分,因为它继续得出结论:您永远不知道它是否是必需的,所以您必须咬紧牙关并初始化COM。我已经指出了为什么
CreateProcess
在所有方面都优于它。您还没有想出一个单一的原因,为什么您更喜欢
ShellExecuteEx
CreateProcess
。这样做,或者有充分的理由接受否决票。这是2013年-UNICODE不再是这种新奇的东西。将字符串传递给命令解释器进行解释。这很容易出错,而且不必要。使用
CreateProcess
-这就是它的用意。
系统在有些情况下,请参见