孟关伦到网上搜索VC中取得程序所在目录的函数, 大家都说是GetCurrentDirectory, 函数原型为DWORD GetCurrentDirectory(DWORD nBufferLength, LPTSTR lpBuffer); 使用简单, 直接将当前路径读到lpBuffer中, 方便快捷, 但是注意它是把当前路径读到lpBuffer中, 而未必是程序所在目录, 由于当前目录是可以通过SetCurrentDirectory修改的, 也会在弹出一个地址选择框后修改的, 所以不要寄希望于它了.
幸好孟关伦还可以找到另一个API, 它的名字是GetModuleFileName, 函数原型为DWORD GetModuleFileName(HMODULE hModule, LPTSTR lpFilename, DWORD nSize), 该函数能直接找到当前应用程序的绝对路径, 唯一遗憾的是它不能直接得到目录路径, 我们需要对它进行简单处理, 得到程序所在目录, 以下简单代码即可实现.
char pLocalPath[255];
memset(pLocalPath, 0, sizeof(pLocalPath));
GetModuleFileName(AfxGetInstanceHandle(), pLocalPath, sizeof(pLocalPath));
pLocalPath[strrchr(pLocalPath, '\\') – pLocalPath] = '\0';
AfxMessageBox(pLocalPath);
以下函数是网上有人写好的, 稍微复杂点:
CString CXXXXXXApp::GetCurDir()
{
TCHAR sDrive[_MAX_DRIVE];
TCHAR sDir[_MAX_DIR];
TCHAR sFilename[_MAX_FNAME],Filename[_MAX_FNAME];
TCHAR sExt[_MAX_EXT];
GetModuleFileName(AfxGetInstanceHandle(), Filename, _MAX_PATH);
_tsplitpath(Filename, sDrive, sDir, sFilename, sExt);
CString homeDir(CString(sDrive) + CString(sDir));
int nLen = homeDir.GetLength();
if(homeDir.GetAt(nLen-1) != _T('\'))
homeDir += _T('\');
return homeDir;
}
VC 取得程序所在目录的方法
未经允许不得转载:孟关伦博客 » VC 取得程序所在目录的方法
相关推荐
-      丝瓜app幸福宝入口,芭比视频app幸福宝下载,成视频app下无限看ios
-      没被封那种直播app,2022最新不被封的平台,没被封的污app
-      免费的手机影视播放器:酷享磁力云会员无限期破解版,酷享磁力云破解版下载
-      分享一款流行的直播软件:夜纯直播下载,夜纯二维码直播
-      专业的终端仿真程序来了:SSH终端仿真程序汉化版
-      外卖哪个app最便宜?看看饿了么怎么零元点餐,最新0元吃外卖教程
-      最新王牌高校v24.5无限金币版,王牌高校v24.5破解版下载
-      最新CorelCAD2019破解版(附最新破解补丁)下载