VC中用ShellExecute等函数执行exe出现错误,但是鼠标双击就可以,这是为什么?

代码:hRet=ShellExecute(NULL,"open",C:\\APPLIC\\LCTLEX3\\LctLex3.exe",NULL,NULL,SW_SHOWD... 代码:
hRet = ShellExecute(NULL,"open",C:\\APPLIC\\LCTLEX3\\LctLex3.exe",NULL,NULL,SW_SHOWDEFAULT);
执行后先弹出上面的图二错误信息,点确定后会出现LctLex3进程,如下图

但是窗口是非正常显示,没有正确执行,什么都没显示,如下图。

也试过其他函数,ShellExecuteEx,CreateProcess和WinExec都没有成功。非常困惑,用鼠标双击LctLex3.exe,是可以正常执行的,用CMD命令也可以正常执行的,实在找不出啥原因,请帮忙解答,非常感谢!
展开
 我来答
fhydralisk
2013-02-19 · TA获得超过1854个赞
知道小有建树答主
回答量:1088
采纳率:0%
帮助的人:621万
展开全部
初步判断是调用ShellExecute这个函数时没有指定缺省目录。请参考该Api参数意义,并将缺省目录指定为exe文件所在目录。
追问
之前的代码:

ShellExecute(NULL,"open","C:\\APPLIC\\LCTLEX3\\LctLex3.exe",NULL,NULL,SW_SHOWDEFAULT);
改完之后的代码:

ShellExecute(NULL,"open","C:\\APPLIC\\LCTLEX3\\LctLex3.exe",NULL,"C:\\APPLIC\\LCTLEX3",SW_SHOWDEFAULT);
改完之后确实可以执行了。
不过还不明白缺省目录的作用是干什么用的
已经非常感谢了!
追答
是这样,你要执行的程序肯定使用了loadpicture这类函数运行时载入了这个bmp文件,由于载入bmp使用了相对路径,它将搜索他的缺省路径下有没有这个bmp文件。双击打开的话系统将指定缺省路径为exe文件所在路径,而使用shellexecute打开,如果你不指定缺省路径,函数将于内部指定缺省路径为你编写这个程序的缺省路径,而这个路径下是没有这个bmp的,所以打不开。
bhtzu
2013-02-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4241万
展开全部
ShellExecute打开非程序文件,一些参数必须是指定设置,否则打不开。
如:
Parameters: PChar; //给要打开的程序指定参数; 如果打开的是文件这里必须是 null
更多设定参考帮助文档。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式