【路径相关方法】1,获取各种系统路径
来源:互联网 发布:塞德里克·维拉尼 知乎 编辑:程序博客网 时间:2024/06/05 19:42
1,目的
介绍获取Windows常用的一些系统路径的方法(当前用户),如:桌面、我的文档等。
并提供简单封装为类PathHelper,供以后工程快捷调用。
2,原理&实现
第一部分 常用系统及进程目录
①获取系统system32路径:(c:\windows\system32)
使用函数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_Hclass 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);效果:
0 0
- 【路径相关方法】1,获取各种系统路径
- android获取各种系统路径的方法
- android获取各种系统路径的方法
- android获取各种系统路径的方法
- 获取系统各种路径
- c#中各种获取程序路径的相关方法
- 获取系统路径的方法
- VC++系统各种路径信息的获取
- 获取php获取路径相关方法
- Java中获取路径的各种方法
- Java中获取路径的各种方法
- java获取各种路径的方法
- Java中获取路径的各种方法
- JSP中获取各种路径的方法
- IOS 获取各种路径得方法
- Java中获取路径的各种方法
- Java中获取路径的各种方法
- C#获取各种路径的方法
- Common-dbutils简介
- Linux内核学习经验总结
- int最大最小值
- 编译ffmpeg出现的问题
- User-agent 字串史(客户端操作系统浏览器识别)
- 【路径相关方法】1,获取各种系统路径
- AVCapture中实现拉近拉远镜头
- android debug log (android调试日志)
- 新手入门——输入格式一
- 在iOS中使用ZXing库
- 黑马程序员----------------------集合框架
- 有品位网站收录
- 语音识别系统之htk----安装
- 第18周acm