VC 取得程序所在目录的方法
2009-04-29 00:51
323 查看
如果到网上搜索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;
}
幸好我们还可以找到另一个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 6.0目录下的cl.exe直接编译程序的方法
- 利用vc 6.0目录下的cl.exe直接编译程序的方法[整理]
- 利用vc 6.0目录下的cl.exe直接编译程序的方法
- Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
- Windows VC++ 调整进程当前目录为程序可执行文件所在目录
- java中取得 当前程序运行所在的目录
- 利用vc 6.0目录下的cl.exe直接编译程序的方法[整理]
- 获取Java程序所在目录的简单方法---FYI
- Qt 程序获取程序所在路径、用户目录路径、临时文件夹等特殊路径的方法
- VC取得当前目录和操作系统盘符的方法
- 利用vc 6.0目录下的cl.exe直接编译程序的方法
- VC获取程序所在目录
- $_SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值解决方法
- Windows VC++ 调整进程当前目录为程序可执行文件所在目录
- $_SERVER['HTTP_HOST']在客户的环境里,取得的值总是程序所在的服务器在其局域网内的ip值解决方法
- 利用vc 6.0目录下的cl.exe直接编译程序的方法
- 迅雷中的“打开文件所在目录”并定位文件的vc实现方法
- VC创建目录及取得系统时间的方法
- C#取得Web程序及WinForm程序的根目录路径的方法