使用start在Windows下启动应用程序

时间:2008-12-08 19:05:54

标签: c++ windows mfc

我注意到我可以通过写开始文件名来启动一个带有相关处理程序的程序。但是,对于某些文件,我得到的只是一个控制台,我不知道为什么。我正在尝试在MFC中填充列表控件,我想让程序和它的关联处理程序在我双击选择时运行。有没有更好的方法,或解释为什么这不起作用?
这是可能成为问题的代码:


int selection = listControl.GetCurSel();
CString text;
listControl.GetText(selection,text);
string std_str = StringUtils::CStringToString(text);
string st = string("start \"")+std_str+string("\"");
const char* command = st.c_str();
system(command);

2 个答案:

答案 0 :(得分:5)

如果start命令行中的第一个参数用双引号括起来,它会将其用作窗口标题而不是命令。它很蹩脚,但这就是它的作用......

尝试

string st = string("start \"\" \"")+std_str+string("\"");

代替。

但是如果你试图从你的进程中获取文件的shell处理程序,那么更好,更清晰的方法来执行此操作而不是调用start命令是使用{{3} }或ShellExecute() Win32 API。

答案 1 :(得分:1)

我相信start使用与文件扩展名关联的文件处理程序。

基本上它会使用文件扩展名来查找要运行的应用程序 这听起来像你正在使用的文件的扩展导致控制台的默认处理程序被启动。

您可以从阅读MS文档开始:
http://msdn.microsoft.com/en-us/library/53ezey2s.aspx

相关问题