目前位置: VCer资源中心 >>> VCer知道

[本帖已阅读1297次 分值0 回复0次] 张贴资源 发回信箱 控制面板

请教:怎么得到应用程序的绝对路径

提供者:lucy 张贴时间:2007-03-09 14:22:43.0 出处:newsmth.net 作者:不祥

请教:怎么得到应用程序的绝对路径(2007-03-09 14:22:43.0)


lucy


 
级别: VCer小兵
头衔: VCer会员

经验: 10
作品: 92
分会: 华北分会
注册: 2007-03-09 10:35:00.0
登录: 2007-05-31 14:40:23.0

标  题: [合集] 请教:怎么得到应用程序的绝对路径

发信站: 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最稳妥

其他都会有问题

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/1173421363218.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]
[投票结果]

A: 评分 10 0% (0 票)
B: 评分 5 0% (0 票)
C: 评分 0 0% (0 票)
D: 评分 -5 0% (0 票)
E: 评分 -10 0% (0 票)