获取本进程所在目录
来源:互联网 发布:淘宝互刷是怎么刷的 编辑:程序博客网 时间:2024/04/30 00:33
获取本进程所在目录,简单的可以直接使用GetCurrentDirectory函数获取本进程所在的目录(确切的说是工作目录),但是在很多特殊情况下取到目录可能是被修改过的,比如在debug模式这个函数取到并不是真正的当前目录而是.vcproj文件所在文件夹下。
方法1:直接使用系统的API,注意这里面的GetLongPathName函数只是为了将路径转成长路径,因为如果在很多特殊文件夹下,那么我们取到的路径是缩写的。
TCHAR szbufPath[MAX_PATH] = TEXT("");
TCHAR szLongPath[MAX_PATH] = TEXT("");
::GetModuleFileName(NULL,szbufPath, MAX_PATH);
::GetLongPathName(szbufPath,szLongPath,MAX_PATH);
::PathRemoveFileSpec(szLongPath);//不包括最后面的\, 就是文件夹路径
当然,方法1需要包含下面的头文件和库文件
#include<Shlwapi.h>
#pragmacomment(lib,"Shlwapi.lib")
但是shlwapi只支持win xp sp2和winserver 2003以后的系统
详情:http://msdn.microsoft.com/en-us/library/bb759845%28VS.85%29.aspx
方法2:使用字符串函数自己搜索\所在的地方,然后去除后部分
TCHAR szbufPath[MAX_PATH] = TEXT("");
TCHAR szLongPath[MAX_PATH] = TEXT("");
::GetModuleFileName(NULL,szbufPath, MAX_PATH);
::GetLongPathName(szbufPath,szLongPath,MAX_PATH);
LPCTSTR lpTemp = _tcsrchr(szLongPath,'\\');
*_tcsstr(szLongPath,lpTemp)= 0;
方法3:也是使用字符串函数直接去除本进程的名字,某种程度上说比较死板
TCHAR szbufPath[MAX_PATH] = TEXT("");
TCHAR szLongPath[MAX_PATH] = TEXT("");
::GetModuleFileName(NULL,szbufPath, MAX_PATH);
::GetLongPathName(szbufPath,szLongPath,MAX_PATH);
*_tcsstr(szLongPath,TEXT("\\StringTest.exe"))= 0;
一般来说推荐方法2。
- 获取本进程所在目录
- 获取本进程所在目录
- GetCurrentDirectory()和GetMoudleFileName()获取进程所在目录
- 如何获得当前本进程所在的目录
- WinCE下如何获取进程所在的目录
- 如何获取当前进程所在目录的方法
- WinCE下如何获取进程所在的目录
- linux 获取当前进程的可执行文件所在的目录
- WinCE下如何获取进程所在的目录
- 获取当前进程文件所在目录,用于替代GetCurrentDirectory
- 获取dll所在目录
- 获取文件所在目录
- Python获取程序所在目录
- delphi 获取程序所在目录
- 获取执行程序所在目录
- 获取程序的所在目录
- VC获取程序所在目录
- Python获取脚本所在目录
- WideCharToMultiByte和MultiByteToWideChar函数
- 深入学习Windows动态链接库
- 第五部分:IDropTarget实现
- 子衿的事(73)
- android webview实现文本选择
- 获取本进程所在目录
- ASP.NET和PHP全面对比
- 深入理解ext4(一)----extent区段
- 删除文件到回收站
- POJ 3096 Surprising Strings
- 验证IP地址格式是否正确的js函数
- 创建进程的三种方式
- 全文索引的使用(二)--使用同义词库
- 解决“使用驱动器F中的光盘前需要将其格式化 双击后提示:文件目录损坏且无法读取”问题