首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么获取小弟我的EXE文件所在的目录

2012-03-21 
如何获取我的EXE文件所在的目录?我编了一个程序,希望程序在启动时自动获取一些配置数据,于是我打算在我开

如何获取我的EXE文件所在的目录?
我编了一个程序,希望程序在启动时自动获取一些配置数据,于是我打算在我开发的EXE文件所在目录下创建几个配置文件,但是我该如何在程序中获取EXE文件的路径呢?

[解决办法]
WINAPI DWORD GetModuleFileName( 
HMODULE hModule,
LPWSTR lpFilename, 
DWORD nSize);
这个取得 本程序 路径+名称的
[解决办法]
char FilePath[MAX_PATH+1]= {0};
char *p = NULL;
GetModuleFileName(NULL, FilePath, sizeof(FilePath)); //获取程序当前执行文件名
p=strrchr(FilePath, '\\');
*p='\0';
FilePath里是路径
[解决办法]
GetCurrentDiretory()是不准确的,GetModuleFileNam()获取到全路径,然后用_tsplitpath_s()函数分离即可.

C/C++ code
    TCHAR FilePath[256] = {0};    TCHAR Drive[4], Dir[128], FileName[32], Ext[8];    GetModuleFileName(NULL, FilePath, _countof(FilePath));    _tsplitpath_s(FilePath, Drive, _countof(Drive), Dir, _countof(Dir),         FileName, _countof(FileName), Ext, _countof(Ext));    _stprintf_s(FilePath, _countof(FilePath), TEXT("%s%s"),        Drive, Dir);
[解决办法]
很少有人知道,其实 GetCurrentDirectory 是不行的.
很多时候用 GetCurrentDirectory 可以,是程序刚开始的时候才可以.
这个 GetCurrentDirectory 的意思,不是取当前应用程序所在目录.
这个 Current 在这里,是最近,最后一次的意思.

当我们用一个CFileDialog随便保存一个文件到桌面,再执行GetCurrentDirectory 
得到的目录就是桌面,而非应用程序所在目录了.
本来保存文件不写绝对路径名是会存在应用程序的当前目录的.
但如果这个时候我们保存文件不写绝对路径名,就会存在桌面而不是存在当前目录.
因为他找的是最近使用的目录,而非应用程序所在目录.

只有GetModuleFileName才是可以的.
[解决办法]
给你一个现成的函数吧!

C/C++ code
CString GetExePath(){    char pathbuf[260];    int  pathlen = ::GetModuleFileName(NULL,pathbuf,260);        // 替换掉单杠    while(TRUE)    {        if(pathbuf[pathlen--]=='\\')            break;    }    pathbuf[++pathlen]=   0x0;    CString  fname = pathbuf;    return   fname;}
[解决办法]
ExePath.cpp
C/C++ code
#include <afx.h>#include <iostream.h>CString GetExePath(){    char pathbuf[260];    int  pathlen = ::GetModuleFileName(NULL,pathbuf,260);        // 替换掉单杠    while(TRUE)    {        if(pathbuf[pathlen--]=='\\')            break;    }    pathbuf[++pathlen]=   0x0;    CString  fname = pathbuf;    return   fname;}void main(){    cout<<GetExePath()<<endl;} 

热点排行