我有一个可编程信号发生器。它带有一个 .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++ 启动位于磁盘随机目录中的独立可执行文件吗?
我所说的独立可执行文件是指应用程序的二进制分发只是一个可执行文件和几个其他文件。我可以通过简单地双击来启动可执行文件,但是,我无法使用 ShellExecute 启动它。
最佳答案
如果您查看 ShellExecute ( link ) 的文档,似乎您可能在错误的参数中引用了 app
。第四个参数是 parameters 参数——不是指定打开/运行哪个文件的参数。所以基本上,这应该有效:
std::string app = "C:\\gen.exe";
ShellExecute(NULL,"open",app.c_str(),NULL,NULL,SW_SHOWNORMAL);
或者,您可以使用 CreateProcess或 system("C:\\gen.exe");
。我应该指出,这些选项都不能移植到其他操作系统,但运行一个程序可能不会,但是你最终会这样做,因为大多数操作系统在运行程序的方式上有所不同——甚至程序是什么。
关于c++ - 从 C++ 启动独立的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810193/