我注意到我可以通过编写start filename来启动一个带有相关处理程序的程序.但是,对于某些文件,我得到的只是一个控制台,我不知道为什么.我正在尝试在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);
如果start
命令行中的第一个参数用双引号括起来,它会将其用作窗口标题而不是命令.这很蹩脚,但这就是它的作用......
尝试
string st = string("start \"\" \"")+std_str+string("\"");
代替.
但是,如果您正在尝试从进程中获取文件的shell处理程序,那么更好,更清晰的方法来执行此操作而不是调用该start
命令是使用ShellExecute()
或ShellExecuteEx()
Win32 API.