0

我尝试在 c++ Visual Studio 中从我的代码启动一个程序。我尝试了这些 cmds:

system( "\" C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"");
system( "start" C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"");
system( "\" C:\\Program "" Files""(x86)\\scilab-5.3.3\\bin\\WScilex.exe"");     

他们都没有工作,有没有人知道如何完成这项工作提前谢谢

4

3 回答 3

2

使用规范的ShellExecuteWinAPI 函数。最简单的情况:

ShellExecute(hwnd, "open", "c:\\MyProgramPath\\WScilex.exe", NULL, NULL, 0);

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/bb776886(v=vs.85).aspx

于 2012-11-29T10:59:16.203 回答
2

Do not try to use quotes twice, as you do in Command Prompt (cmd). In a c++ code you won't need to specify it in quotes if you have 'spaces' in the file path.

You should use 'WinExec' instead of 'system', so console window will not be shown.

e.g.

WinExec("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe",0);
于 2012-11-29T11:07:24.113 回答
0

system函数将字符串作为命令传递给 Windows [cmd.exe] 中的系统默认命令解释器。

所以,在命令的开头不要有多余的空格:

system( "\"C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"" );

[cmd.exe] 命令解释器对路径中的正斜杠感到满意。


您的第一次尝试:

system( "\" C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"");

↑ 开头有多余的空格。空格很重要,因为命令字符串被引用。但是您需要引号,因为路径包含一个空格。

您的第二次尝试:

system( "start" C:/Program Files (x86)/scilab-5.3.3/bin/WScilex.exe\"");

↑ 不应该编译。这不是真正的代码。至少不是您已成功编译和运行的代码。

您的第三次尝试:

system( "\" C:\\Program "" Files""(x86)\\scilab-5.3.3\\bin\\WScilex.exe"");

↑ 开头有多余的空格。空格很重要,因为命令字符串被引用。但是您需要引号,因为路径包含一个空格。

于 2012-11-29T11:04:57.350 回答