标 题: [合集] 请教:怎么得到应用程序的绝对路径
发信站: BBS 水木清华站 (Mon Aug 16 21:07:31 2004), 站内
☆─────────────────────────────────────☆
zflydy (凤林) 于 (Mon Aug 16 08:00:49 2004) 提到:
☆─────────────────────────────────────☆
ihan (ignorant) 于 (Mon Aug 16 08:05:04 2004) 提到:
getcommandline()
【 在 zflydy (凤林) 的大作中提到: 】
☆─────────────────────────────────────☆
zflydy (凤林) 于 (Mon Aug 16 08:11:41 2004) 提到:
有没有不含程序名称的
【 在 ihan (ignorant) 的大作中提到: 】
: getcommandline()
☆─────────────────────────────────────☆
abple (风筝) 于 (Mon Aug 16 08:52:43 2004) 提到:
GetCurrentDirectory
【 在 zflydy (凤林) 的大作中提到: 】
: 有没有不含程序名称的
☆─────────────────────────────────────☆
oneaddone (oneaddone) 于 (Mon Aug 16 08:54:38 2004) 提到:
这个不行。
【 在 abple (风筝) 的大作中提到: 】
: GetCurrentDirectory
☆─────────────────────────────────────☆
oneaddone (oneaddone) 于 (Mon Aug 16 08:56:47 2004) 提到:
GetModuleFileName()
_splitpath()
【 在 zflydy (凤林) 的大作中提到: 】
: 有没有不含程序名称的
☆─────────────────────────────────────☆
abple (风筝) 于 (Mon Aug 16 08:56:55 2004) 提到:
怎么可能,我就用过,很好使的
能否把你那部分代码贴出来看看?
【 在 oneaddone (oneaddone) 的大作中提到: 】
: 这个不行。
☆─────────────────────────────────────☆
oneaddone (oneaddone) 于 (Mon Aug 16 08:59:00 2004) 提到:
当前路径不一定是应用程序的路径。不过大多数情况下是一样的。
【 在 abple (风筝) 的大作中提到: 】
: 怎么可能,我就用过,很好使的
: 能否把你那部分代码贴出来看看?
☆─────────────────────────────────────☆
abple (风筝) 于 (Mon Aug 16 09:10:17 2004) 提到:
我就遇到过这种情况,我和另一个同学和编的程序
他总是使用打开文件对话框来选取文件,而我总是使用相对路径
结果他那部分一运行改变了程序的工作路径,我这部分就不行了
所以我在程序初始化的时候使用一个全局变量
m_ProgramDirectory=GetCurrentDirectory();
然后在我程序运行那块加上SetCurrentDirectory(m_ProgramDirectory);
这样程序在也不会出现路径问题了
你也可以这样试一下
【 在 oneaddone (oneaddone) 的大作中提到: 】
: 当前路径不一定是应用程序的路径。不过大多数情况下是一样的。
☆─────────────────────────────────────☆
oneaddone (oneaddone) 于 (Mon Aug 16 09:28:28 2004) 提到:
这样还是不行。。CurrentDirectory和应用程序的路径不是一个概念。
当你双击运行 应用程序时,CurrentDirectory 确实是 应用程序的路径。
但是:
比如你的应用程序是在 G:\app.exe
你在控制台模式下输入:
D:>G:\app.exe
这时CurrentDirectory 是D:\
或者其他程序用WinExec调用你的程序。CurrentDirectory也不一定就是 你程序的路径
【 在 abple (风筝) 的大作中提到: 】
: 我就遇到过这种情况,我和另一个同学和编的程序
: 他总是使用打开文件对话框来选取文件,而我总是使用相对路径
: 结果他那部分一运行改变了程序的工作路径,我这部分就不行了
: 所以我在程序初始化的时候使用一个全局变量
~~~~sigh,何必呢。。
: m_ProgramDirectory=GetCurrentDirectory();
: 然后在我程序运行那块加上SetCurrentDirectory(m_ProgramDirectory);
: 这样程序在也不会出现路径问题了
: 你也可以这样试一下
☆─────────────────────────────────────☆
meitianhappy (天天都开心) 于 (Mon Aug 16 09:54:11 2004) 提到:
可以这样去做,我就是这样去做的,没有出现过问题。
TCHAR PathBuffer[MAX_PATH];
GetModuleFileName(NULL,PathBuffer,MAX_PATH);
CString csExePath=(CString)PathBuffer;
【 在 zflydy (凤林) 的大作中提到: 】
☆─────────────────────────────────────☆
mOK (唐伯虎の新婚之夜) 于 (Mon Aug 16 12:17:28 2004) 提到:
同意.不过他要的是目录名,在此之上找到最后一个\\ 把后面的程序名去掉就可以了
【 在 meitianhappy (天天都开心) 的大作中提到: 】
: 可以这样去做,我就是这样去做的,没有出现过问题。
: TCHAR PathBuffer[MAX_PATH];
: GetModuleFileName(NULL,PathBuffer,MAX_PATH);
: ...................
☆─────────────────────────────────────☆
aonewater (aonewater) 于 (Mon Aug 16 12:20:07 2004) 提到:
还是用API
GetModuleFileName最稳妥
其他都会有问题