概述
1,目的
介绍获取Windows常用的一些系统路径的方法(当前用户),如:桌面、我的文档等。
并提供简单封装为类PathHelper,供以后工程快捷调用。
2,原理&实现
第一部分 常用系统及进程目录
①获取系统system32路径:(c:windowssystem32)
使用函数GetSystemDirectory. CString版封装:
static CString GetSysFolder ()
{
TCHAR szPath[100] ={0};
GetSystemDirectory( szPath, 100 ) ;
return CString(szPath) ;
}
②获取
系统windows路径:(c:windows)
static CString GetWindowsFolder()
{
TCHAR szPath[100] ={0};
GetWindowsDirectory( szPath, 100 ) ;
return CString(szPath) ;
}
③获取模块运行所在文件夹(exe所在目录)
//获取运行目录(exe所在目录)
static CString GetModuleFolder( HMODULE hModule )
{
TCHAR
szPath[MAX_PATH] = {0} ;
GetModuleFileName( hModule, szPath, MAX_PATH ) ;
ZeroMemory(_tcsrchr(szPath,_T('\')), _tcslen(_tcsrchr(szPath,_T('\') ) )*sizeof(TCHAR)) ;
return CString(szPath) ;
}
④获取模块文件完整路径(包含exe文件名及后缀)
//获取运行模块文件全路径
static CString GetModuleFilePath( HMODULE hModule )
{
TCHAR
szPath[MAX_PATH] = {0} ;
GetModuleFileName( hModule, szPath, MAX_PATH ) ;
return CString(szPath) ;
}
⑤ 上级目录:
//得到上一级目录
static CString GetUpFolder(CString strPath)
{
int nPos = strPath.ReverseFind('\');
return strPath.Left(nPos);
}
附:PathHelper 小工具类头文件:
/*
提供简化的路径操作:如exe路径、系统路径、上级目录
*/
#ifndef PATH_HELPER_H
#define PATH_HELPER_H
class PathHelper
{
public:
PathHelper(){}
~PathHelper(){}
//得到上一级目录
static CString GetUpFolder(CString strPath)
{
int nPos = strPath.ReverseFind('\');
return strPath.Left(nPos);
}
//获取运行目录(exe所在目录)
static CString GetModuleFolder( HMODULE hModule )
{
TCHAR
szPath[MAX_PATH] = {0} ;
GetModuleFileName( hModule, szPath, MAX_PATH ) ;
ZeroMemory(_tcsrchr(szPath,_T('\')), _tcslen(_tcsrchr(szPath,_T('\') ) )*sizeof(TCHAR)) ;
return CString(szPath) ;
}
//获取运行模块文件全路径
static CString GetModuleFilePath( HMODULE hModule )
{
TCHAR
szPath[MAX_PATH] = {0} ;
GetModuleFileName( hModule, szPath, MAX_PATH ) ;
return CString(szPath) ;
}
static CString GetSysFolder ()
{
TCHAR szPath[100] ={0};
GetSystemDirectory ( szPath, 100 ) ;
return CString(szPath) ;
}
static CString GetWindowsFolder()
{
TCHAR szPath[100] ={0};
GetWindowsDirectory ( szPath, 100 ) ;
return CString(szPath) ;
}
};
#endif
第二部分 系统特殊路径
使用API:
BOOL SHGetSpecialFolderPath( HWND hwndOwner, LPTSTR lpszPath, int nFolder, BOOL fCreate );
参数说明:
HWND hwndOwner:如果在一个对话框或messagebox上显示时,用到的窗口句柄。这里我们单纯获取路径,一般设NULL。
LPTSTR lpszPath : 接收路径的字符串
int nFolder : 微软定义好的一个标志,用到代表要获取那种目录。
常见的如下:
CSIDL_BITBUCKET
回收站
CSIDL_CONTROLS
控制面板
CSIDL_DESKTOP
Windows
桌面Desktop
CSIDL_DESKTOPDIRECTORY
Desktop的目录
CSIDL_DRIVES
我的电脑
CSIDL_FONTS
字体目录
CSIDL_NETHOOD
网上邻居
CSIDL_NETWORK
网上邻居虚拟目录
CSIDL_PERSONAL
我的文档
CSIDL_PRINTERS
打印机
CSIDL_PROGRAMS
程序组
CSIDL_RECENT
最近打开的文档
CSIDL_SENDTO
“发送到”菜单项
CSIDL_STARTMENU
任务条启动菜单项
CSIDL_STARTUP
启动目录
CSIDL_TEMPLATES
文档模板
具体内容可以参照 shlobj.h 。
BOOL fCreate : 如果该文件夹不存在,是否创建它。 一般我们不改系统文件夹,就设FASLE。
调用示例:
CHAR szPath[MAX_PATH] = {0};
SHGetSpecialFolderPath(NULL, szPath,CSIDL_DESKTOP, FALSE);
MessageBox(szPath);
效果:
最后
以上就是秀丽宝贝为你收集整理的【路径相关方法】1,获取各种系统路径的全部内容,希望文章能够帮你解决【路径相关方法】1,获取各种系统路径所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复