如何使用可选参数使my程序打开.exe文件

C++: How to make a my program open a .exe with optional args

本文关键字:程序 exe 文件 my 何使用 参数      更新时间:2023-10-16

我在一个程序上遇到了一些麻烦。我的目标是让它打开几个带有可选参数的.exe文件。例如,如果我想打开一个pdf文件,我可以在cmd窗口中输入下面的字符串。

// If used in a cmd window it will open up my PDF reader and load MyPDF.pdf file
"c:Test spaceSumatraPDF.exe" "c:Test spaceSubMyPDF.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"");

我不确定第二个不工作的原因。这可能是我对系统的一些误解,或者我没有正确使用分隔符。

我觉得有一个库是专门为这个设计的,而不是创建一个使用这么多分隔符的长字符串。

谢谢你的帮助

欢迎使用Stack Overflow!

system方法通过将其参数传递给cmd/c来工作。所以你需要在它周围加上一组额外的引号。参见sled发布的相关问题。

作为系统的替代方案,看看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:WindowsSystem32notepad.exe
sei.lpParameters = args;  // program arguments like c:tempfoo.txt
sei.nShow = SW_NORMAL;  // app should be visible and not maximized or minimized
ShellExecuteEx(&sei);  // launch program
CoUninitialize();

更多信息请点击