我在使用程序时遇到了一些麻烦。我的目标是让它打开几个带有可选args的.exe文件。例如,如果我想打开pdf,我可以将下面的字符串键入cmd窗口。
// If used in a cmd window it will open up my PDF reader and load MyPDF.pdf file
"c:\Test space\SumatraPDF.exe" "c:\Test space\Sub\MyPDF.pdf"
这是我用过的两次尝试。第一个打开PDF但当然不加载文件。第二个根本不起作用。
// Opens the PDF in my program
system("\"C:\\Test space\\SumatraPDF.exe\"");
// Error I get inside of a cmd window is the comment below
// 'C:\Test' is not recognized as an internal or external command, operable program or batch file.
//system("\"C:\\Test space\\SumatraPDF.exe\" \"C:\\Test space\\Sub\\MyPDF.pdf\"");
我不确定第二个不起作用的原因。可能是我误解了一些关于系统的东西,或者我没有正确使用分隔符。
我觉得有一个为此而设计的库,而不是创建一个使用这么多分隔符的长字符串。
感谢您的帮助。
答案 0 :(得分:1)
欢迎使用Stack Overflow!
系统方法通过将其参数传递给cmd / c来工作。所以你需要额外的一组引号。见雪橇发布的related question。
作为系统的替代方案,请查看ShellExecute或ShellExecuteEx Win32 API函数。它有更多的功能,虽然它不便携。
// ShellExecute needs COM to be initialized
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
SHELLEXECUTEINFO sei = {0};
sei.cbSize = sizeof(sei);
sei.lpFile = prog; // program like c:\Windows\System32\notepad.exe
sei.lpParameters = args; // program arguments like c:\temp\foo.txt
sei.nShow = SW_NORMAL; // app should be visible and not maximized or minimized
ShellExecuteEx(&sei); // launch program
CoUninitialize();
更多信息here。