问一个关于路径的问题
我需要调用一个程序,用 WinExec("C:\\Documents and Settings\\Administrator\\桌面\\集成工艺模拟\\Suprembin\\cSUPREM.EXE",SW_SHOWNORMAL),可以达到目的,但是如果用相对路径就不可以了, WinExec("集成工艺及器件特性模拟\\Suprembin\\cSUPREM.EXE",SW_SHOWNORMAL),所以我只能给她加了一个路径
{
SetCurrentDir("集成工艺及器件特性模拟\\Suprembin\\");
WinExec("集成工艺及器件特性模拟\\Suprembin\\cSUPREM.EXE",SW_SHOWNORMAL);
}
这样就可以了。
可是问题接着来了,这样我让它运行一次以后,系统会把SetCurrentDir的这个(“集成工艺及器件特性模拟\\Suprembin\\")默认为相对路径,这样我后边用到的相对路径和前面已经用到的都不好用了。我想问问怎样才能在后面把路径改回来。简单点说,我给她一个按钮让cSUPREM.EXE运行完了我点击那个按钮就能把路径改回原来的相对路径。请问一下怎么实现。小弟水平有限大家不要笑话,都请帮帮忙。
问题点数:0、回复次数:7Top
1 楼xpdavis(咕嘟-不想孤独)回复于 2005-06-04 18:52:22 得分 0
一种方法是先GetCurrentDir,保存起来,修改目录后,再用保存的恢复回去
另一种方法还是用绝对路径,不过绝对路径不是常量,是计算出来的,根据应用程序的路径推导出来的,所以能够适应不同的环境
用当前路径的方法不好,应该须要时刻搞清楚当前在哪里,不爽Top
2 楼rainfall19831109(恩恩)回复于 2005-06-05 00:39:41 得分 0
直接用API
用GetModuleFileName获取当前运行程序的绝对路径Top
3 楼songshuhua(宝华)回复于 2005-06-05 10:20:29 得分 0
就算我用绝对路径也必须要有SetCurrentDir("集成工艺及器件特性模拟\\Suprembin\\");否则程序不能正常运行,只要有了这句话后面的路径都会成为“集成工艺及器件特性模拟\\Suprembin\\”下的。请问恩恩老大,你的这个方法是获得的我的BCB执行程序的路径还是我调用的程序的绝对路径。Top
4 楼songshuhua(宝华)回复于 2005-06-05 10:32:46 得分 0
恩恩 如果我上面
{
SetCurrentDir("集成工艺及器件特性模拟\\Suprembin\\");
WinExec("集成工艺及器件特性模拟\\Suprembin\\cSUPREM.EXE",SW_SHOWNORMAL);
}
那么我下面用GetModuleFileName能够获得原来的路径吗,如果能,你能帮我写一下看看吗,谢谢了。Top
5 楼xpdavis(咕嘟-不想孤独)回复于 2005-06-05 10:43:45 得分 0
GetModuleFileName + "\\集成工艺及器件特性模拟\\Suprembin\\cSUPREM.EXE"Top
6 楼JedyWoody(学,然后知不足)回复于 2005-06-05 16:24:19 得分 0
一般还是用绝对路径或GetModuleFileName + "\\集成工艺及器件特性模拟\\Suprembin\\cSUPREM.EXE"转化过去。
使用相对路径,最后也是要转换成绝对路径的Top
7 楼rainfall19831109(恩恩)回复于 2005-06-05 23:08:57 得分 0
sorry,刚刚才看到
GetModuleFileName就是获得你的EXE执行文件的绝对路径,如:“D:\a.exe”
另外,说明一下
GetModuleFileName不会因为你的相对路径改变而有影响Top




