在Windows中从c ++启动.exe文件

时间:2012-11-29 10:57:21

标签: c++

我尝试从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"");     

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

不要像在命令提示符(cmd)中那样尝试使用两次引号。在c ++代码中,如果文件路径中有“空格”,则无需在引号中指定它。

您应该使用'WinExec'而不是'system',因此不会显示控制台窗口。

e.g。

WinExec("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe",0);

答案 2 :(得分: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"");

↑一开始就有一个无关的空间。空间很重要,因为引用了命令字符串。但是你需要引号,因为路径包含一个空格。