【发布时间】:2013-02-26 20:48:13
【问题描述】:
我希望我的其他 c++ 程序从另一个文件运行,所以我使用 shell 执行。亩代码是:
#pragma comment(lib,"shell32.lib")
#include "windows.h"
#include<Shellapi.h>
#include<stdio.h>
#include<iostream>
using namespace std;
class spwan{
public:
//char szPath[] = "";
void run(char path[]);
};
void spwan::run(char szPath[]){
HINSTANCE ShellExecute(HWND, "open", szPath,"","",SW_SHOW);
cout<<"program executed";
}
int main ()
{
spwan s;
s.run("path to the file");
}
但是我遇到了一个问题,就像预期的带有“open”的类型说明符一样,我无法使用 szPath 定义路径。任何帮助。
更具体的错误是: 它给我的行错误:HINSTANCE ShellExecute(HWND, "open", szPath,"","",SW_SHOW);作为语法错误:'字符串'
当我给出这样的路径时:- C:\Users\saira\Documents\Visual Studio 2010\Projects\phase_1_solver\Debug\phase_1_solver.exe 它给出的错误如下:warning C4129: 's': unrecognized character escape sequence警告 C4129: 'D' : 无法识别的字符转义序列
【问题讨论】:
-
请告诉我们出了什么问题。编译器错误?运行时失败?并提供确切的信息。此外,它拼写为
spawn。无需在此处传递窗口句柄。通过0。也不需要传递动词,传递NULL。另外两个参数也传递NULL而不是""。 -
这真的归结为如何正确调用函数,如果你不能这样做,我强烈建议不要进入 Windows API。
-
我想知道的主要是如何使用路径作为参数。
-
您已经在使用它作为参数。我不明白你为什么不告诉我们出了什么问题?你寻求帮助,但不会透露细节。我的意思是,我猜这个问题是
ShellExecute实际上是ShellExecuteW并且需要宽字符串。但如果你不告诉我们错误,那只是一个疯狂的猜测。 -
它给了我错误的行:HINSTANCE ShellExecute(HWND, "open", szPath,"","",SW_SHOW);作为语法错误:'string'
标签: c++ shellexecute createprocess