| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6571 人关注过本帖
标题:小白求大神指教,关于mfc不能打开exe文件的问题
只看楼主 加入收藏
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:10 
小白求大神指教,关于mfc不能打开exe文件的问题
用mfc写了一个打开外部exe文件的程序,button的响应事件代码如下:ShellExecuteA(NULL, "open","E:\\project\\dongtinglake\\DthGis v15.06.23\\Release\\DthGis.exe",   NULL,   NULL,   SW_SHOW);
其中DthGis.exe为一个使用QT跟OSGearth(一种渲染插件)编写的程序的可执行文件,在release中单独打开这个exe是可以的,但是使用上述代码却不能打开。将代码中的exe文件换成其他c++编写的普通无插件exe,同样可以打开,所以请教大神为什么我不能打开DthGis.exe?跟插件有关吗?在线等,谢谢!
搜索更多相关主题的帖子: release 执行文件 button 在线 
2016-03-13 21:24
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
收藏
得分:0 
不能沉啊,求大神解答
2016-03-13 21:25
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
收藏
得分:0 
有人吗
2016-03-13 21:26
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
收藏
得分:0 
大神在哪里?
2016-03-13 21:32
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:5 
ShellExecute(
hWnd: HWND; {指定父窗口句柄}
Operation: PChar; {指定动作, 譬如: open、runas、print、edit、explore、find[2]  }
FileName: PChar; {指定要打开的文件或程序}
Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
Directory: PChar; {缺省目录}
ShowCmd: Integer {打开选项}



如果exe调用相对路径目录则无法正确。如果使用NULL缺省,就是系统默认目录,可能是你的exe目录或者系统。被调用程序从指定处是无法使用相对路径的。
收到的鲜花
  • z11437096082016-03-13 23:00 送鲜花  3朵   附言:一语中的,直接找到了我程序的问题所在,大 ...
2016-03-13 21:59
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
收藏
得分:0 
回复 5楼 天使梦魔
DthGis.exe在原先目录可以双击打开,直接移动DthGis.exe后则不能打开,移动DthGis.exe以及上层同一根目录下面对应数据之后,可以双击打开,所以我的这个DthGis.exe是不是涉及到数据依赖?然后我的“Directory: PChar; {缺省目录}”这一块应该如何填写?
2016-03-13 22:15
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:5 
都已经说了这么明白了。。。。。。。。。。。

"E:\\project\\dongtinglake\\DthGis v15.06.23\\Release\\"
替换掉你原来的NULL吧

环境参数问题,被启动的exe自己有相对目录,你调用又不传环境地址默认就从你的exe启动,但你的exe目录下没有被启动的那些文件。
收到的鲜花
  • z11437096082016-03-13 23:01 送鲜花  3朵   附言:一语中的,直接找到了我程序的问题所在,大 ...
2016-03-13 22:34
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
收藏
得分:0 
回复 7楼 天使梦魔
谢谢!我刚刚也这样做的,只是用的是"E:\\project\\dongtinglake\\DthGis v15.06.23"替换的"NULL",我是想着"E:\\project\\dongtinglake\\DthGis v15.06.23"这个目录下面有DthGis.exe执行需要的数据,结果一直没打开成功,再往下设置一层目录到"E:\\project\\dongtinglake\\DthGis v15.06.23\\Release",就可以打开了,真心感谢!
2016-03-13 22:41
z1143709608
Rank: 2
等 级:论坛游民
帖 子:23
专家分:20
注 册:2016-3-13
收藏
得分:0 
回复 7楼 天使梦魔
我单独将DthGis.exe拷贝出去,双击不能运行,拷贝整个Release文件夹,双击之后也不能运行,一直要将跟release同根目录的data,image两个文件夹一起拷贝出去,双击才可打开,所以就一直想着用"E:\\project\\dongtinglake\\DthGis v15.06.23"替换"NULL”结果就一直不能打开,虽然现在可以运行了,但是我还是不明白为什么默认路径要设置在这一层。release文件夹下面有DthGis.exe  DthGis.exp  DthGislib  DthGis.pdb  。不需要跟release文件夹同根目录的data文件夹和image文件夹吗?
2016-03-13 22:55
天使梦魔
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:10 
你要带着走的最好用相对路径,不要用E盘什么地址的。
被运行的EXE它自己使用的是相对路径,你给它的参数指定一个环境目录,这个环境目录就是模拟它当前运行目录。
那个EXE使用的是//data 和 //image这种目录,就是说在它当前文件夹找这两个文件夹。
所以无论你复制到哪里,D盘或者C盘,都不影响使用。因为在EXE当前永远都找的到下级文件。
2016-03-15 23:25
快速回复:小白求大神指教,关于mfc不能打开exe文件的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033007 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved