VC 获 取 当前程序运行路径的几种方法

本文深入解析了使用API函数GetModuleFileName获取程序完整路径,并通过strrchr进行路径截取的方法。同时介绍了MFC获取帮助文件路径的方式及PathRemoveFileSpec函数的运用,提供了一个实用的路径处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用APi函数GetModuleFileName

char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);        //获取到完整路径如:E:/Tools/qq.exe
*strrchr(path,'//') = '/0';                                                      //截取路径E:/Tools

2.MFC

char path[MAX_PATH];
memcpy(path, AfxGetApp()->m_pszHelpFilePath, MAX_PATH)       //获取到完整路径如:E:/Tools/qq.hlp
*strrchr(path,'//') = '/0';                                                                              //截取路径E:/Tools

 

3 用这个函数也可以做到截取路径

PathRemoveFileSpec(LPTSTR pszPath)

例:

LPTSTR GetProgramDir(int nBufferLength, LPTSTR lpBuffer)
{
    DWORD dwReturn = 0;
LPTSTR tszSlash;

    if (nBufferLength <= 0 || lpBuffer == NULL)
        return NULL;

    dwReturn = ::GetModuleFileName(NULL, lpBuffer, nBufferLength);
if (dwReturn <= nBufferLength)
    {
    PathRemoveFileSpec(lpBuffer);
    tszSlash = lpBuffer;
    }

    return tszSlash;
}

 

2..

string GetPPath()                 //取程序运行的当前路径
{
TCHAR exeFullPath[MAX_PATH]; // MAX_PATH
GetModuleFileName(NULL,exeFullPath,MAX_PATH);//得到程序模块名称,全路径

char drive[_MAX_DRIVE];
char dir[_MAX_DIR];

_splitpath(exeFullPath, drive, dir, NULL,NULL);

string PragramPath(drive);
string TempPath(dir);
PragramPath += TempPath ;
cout<< PragramPath<<endl;
return PragramPath;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值