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

标签 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++ 启动位于磁盘随机目录中的独立可执行文件吗?

我所说的独立可执行文件是指应用程序的二进制分发只是一个可执行文件和几个其他文件。我可以通过简单地双击来启动可执行文件,但是,我无法使用 ShellExecute 启动它。

最佳答案

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

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

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

关于c++ - 从 C++ 启动独立的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20810193/

相关文章:

c++ - 以下场景如何复制?

python - 单击图标将运行或安装我的 python Tkinter 桌面应用程序,该应用程序也可用于任何 PC

c++ - 使用boost的字节序转换

c++ - "Incomplete type not allowed "创建 std::ofstream 对象时

c++ - int8_t、int16_t、int32_t 和 int64_t 在不同的 C++ 编译器上是否具有相同的各自范围?

c++ - 如何在 Visual C++ 2012 中 sleep 不受系统时钟调整影响的固定时间

c++ - 接收到一个字符串 "chars"并尝试使用指针计算其中有多少个是同类的

c++ - 监控事件目录事件

vb6 - MSCOMCTL.ocx缺少Windows 10

python - cx_freeze 中的 TCL_LIBRARY