从C ++启动独立的可执行文件

时间:2013-12-28 01:53:23

标签: c++ visual-c++ exe

我有一个可编程信号发生器。它带有.inf文件和.exe文件。双击.exe文件运行信号发生器系统应用程序。

我想从一段VC ++代码中调用这个可执行文件。我正在使用Shell Execute,如下所示。

std::string app = "C:\gen.exe";
ShellExecute(NULL,"open",NULL,app.c_str(),NULL,SW_SHOWNORMAL);

但是,命令弹出打开文件对话框,而不是启动可执行文件。

在进一步尝试使用ShellExecute之后,我注意到ShellExecute适用于Program Files目录中的可执行文件,但是当我有独立的可执行文件时失败,例如我在上面提到的情况。有人可以解释如何使用VC ++启动位于磁盘随机目录中的独立可执行文件吗?

通过Standalone可执行文件,我的意思是应用程序的二进制分发只是一个可执行文件,还有一些其他文件。我可以通过双击它来启动可执行文件,但是,我无法使用ShellExecute启动它。

1 个答案:

答案 0 :(得分:2)

如果您查看ShellExecute(link)的文档,似乎您可能在错误的参数中引用了app。第四个参数是parameters参数 - 而不是指定打开/运行哪个文件的参数。所以基本上,这应该工作:

std::string app = "C:\\gen.exe";
ShellExecute(NULL,"open",app.c_str(),NULL,NULL,SW_SHOWNORMAL);

或者,您可以使用CreateProcesssystem("C:\\gen.exe");。我应该指出,这些选项都不能移植到其他操作系统,但运行程序可能不会,但是你最终会这样做,因为大多数操作系统在运行程序方面有所不同 - 甚至程序都不同。