WIN32、c++取程序当前执行目录路径,shlwapi常用路径函数
取当前执行程序的根目录
#include "shlwapi.h" #pragma comment(lib,"shlwapi.lib") TCHAR curDirPath[MAX_PATH]; //取当前执行模块的全路径,如果此模块是被其它程序调用的,返回的路径还是这个程序的路径 ::GetModuleFileName(NULL, curDirPath,MAX_PATH); //从路径中移除文件名 PathRemoveFileSpec(curDirPath);
curDirPath的值为 E:\\eng\\Yeng\\bin 这样的目录路径
另一种方法取当前进程所在目录(路径跟上面一样的格式)跟上面不一样的情况是,比如当前有一个主线程调用啦一个exe文件,这个exe文件中使用GetCurrentDirectory取到的是主线程的EXE路径,而不是自己的路径
#include "windows.h" TCHAR strBuff[256]; GetCurrentDirectory(256, strBuff);
取路径中的文件名(带扩展名)
TCHAR curDirPath[MAX_PATH]; //取当前可执行文件的全路径 ::GetModuleFileName(NULL, curDirPath,MAX_PATH); TCHAR* fname=::PathFindFileName(szFileName);//取文件名
另外此头文件中还有很多常用的函数下面是一些跟路径相关的函数
PathAddBackslash //路径后添加反斜杆 CString.GetBuffer(_MAX_PATH)
PathAddExtension //添加扩展名
PathAppend //附加路径
PathBuildRoot
PathCanonicalize
PathCombine
PathCompactPath
PathCompactPathEx
PathCommonPrefix
PathFileExists //路径或文件是否存在
PathFindExtension //取路径中的扩展名
PathFindFileName //取路径中的文件名
PathFindNextComponent
PathFindOnPath
PathGetArgs
PathGetCharType
PathGetDriveNumber
PathIsDirectory
PathIsFileSpec
PathIsPrefix
PathIsRelative
PathIsRoot
PathIsSameRoot
PathIsUNC
PathIsUNCServer
PathIsUNCServerShare
PathIsContentType
PathIsHTMLFile
PathIsURL
PathMakePretty
PathMatchSpec
PathParseIconLocation
PathQuoteSpaces
PathRelativePathTo
PathRemoveArgs
PathRemoveBackslash
PathRemoveBlanks
PathRemoveExtension 移除路径中的扩展名
PathRemoveFileSpec 移除路径中的文件名
PathRenameExtension 重命名路径中的扩展名
PathSearchAndQualify
PathSetDlgItemPath
PathSkipRoot
PathStripPath
PathStripToRoot
PathUnquoteSpaces
PathMakeSystemFolder
PathUnmakeSystemFolder
PathIsSystemFolder