如何在C++中运行外部文件?Windows环境下代码执行失败求助
你的代码存在几个明显错误,逐个修正即可:
1. 宏定义与ShellExecute参数错误
你的#define写法不符合语法,而且ShellExecute的参数顺序混乱、缺少必要逗号。正确的宏定义应该是:
#define cfile ShellExecute(GetDesktopWindow(), "open", "file.exe", NULL, NULL, SW_SHOWNORMAL)
ShellExecute的标准参数顺序是:窗口句柄、操作类型、目标文件、命令参数、工作目录、显示方式,你之前的参数位置和分隔都有问题。
2. if语句多余分号
if (command=="file");末尾的分号会直接终止if的逻辑判断,后面的大括号会变成独立代码块——不管输入什么都会执行cfile;,必须去掉这个分号:
if (command=="file") { cfile; }
3. 补充缺失的头文件
string类需要<string>头文件支持,建议添加:
#include <string>
修正后的完整代码
#include <iostream> #include <windows.h> #include <string> using namespace std; #define cfile ShellExecute(GetDesktopWindow(), "open", "file.exe", NULL, NULL, SW_SHOWNORMAL) int main(){ string command; cin >> command; if (command=="file") { cfile; } }
额外建议:可以通过ShellExecute的返回值判断执行是否成功(返回值大于32为成功),方便排查问题:
HINSTANCE result = cfile; if ((int)result <= 32) { cout << "执行失败,错误码:" << GetLastError() << endl; }
内容的提问来源于stack exchange,提问作者Remy
相关产品推荐
相关产品推荐

