【发布时间】:2013-11-26 15:22:12
【问题描述】:
我在 MFC 应用程序中运行带有 2 个参数的 exe。我怎样才能做到这一点。
例如:sox.exe a.wav b.mp3 我需要在 MFC 应用程序中执行
提前致谢。
【问题讨论】:
-
参见 CreateProcess 函数。
标签: command-line mfc
我在 MFC 应用程序中运行带有 2 个参数的 exe。我怎样才能做到这一点。
例如:sox.exe a.wav b.mp3 我需要在 MFC 应用程序中执行
提前致谢。
【问题讨论】:
标签: command-line 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);
}
这样做的首选方法是使用ShellExecuteEx。
【讨论】:
ShellExecuteEx。 CreateProcess 是正确的工具。
ShellExecuteEx 要求您在调用线程上初始化 COM。如果该线程恰好在 MTA 中,则游戏已经结束。它报告错误的方式至少可以说是令人困惑的。如果您在加载程序锁下运行ShellExecuteEx,您将立即陷入死锁。 CreateProcess 不存在这些问题。这些都是事实,而不是意见。
CreateProcess 在各个方面都优越。你还没有想出一个理由,为什么人们应该更喜欢ShellExecuteEx 而不是CreateProcess。这样做,或者有充分的理由接受反对票。