失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C++中用 GetModuleFileName()函数 获得程序当前的运行目录

C++中用 GetModuleFileName()函数 获得程序当前的运行目录

时间:2019-07-14 14:06:41

相关推荐

C++中用 GetModuleFileName()函数 获得程序当前的运行目录

在开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetModuleFileNam

DWORD WINAPI GetModuleFileName( HMODULE hModule, LPTSTR lpFileName, DWORD nSize);

hModule:要获取文件名的模块名柄,null表示当前模块

lpFileName:输出参数,存放取得的文件名

nSize:lpFileName参数的长度

void FileName(){TCHAR lpFileName[MAX_PATH];::GetModuleFileName(null, lpFileName, MAX_PATH);SetDlgItemText(IDC_TEXTBOX, lpFileName);}

在开发软件的过程里,经常需要把数据保存到当前执行文件路径下面,或者读取当前执行文件路径下的一些配置信息。这时就需要从当前模块里获取所在的目录路径,以便进行固定的位置操作文件。要解决这个需求,就需要调用API函数GetModuleFileName来获取模块所在的路径。 函数GetModuleFileName声明如下:

WINBASEAPIDWORDWINAPIGetModuleFileNameA( __in_opt HMODULE hModule, __out_ecount_part(nSize, return + 1) LPCH lpFilename, __inDWORD nSize );WINBASEAPIDWORDWINAPIGetModuleFileNameW( __in_opt HMODULE hModule, __out_ecount_part(nSize, return + 1) LPWCH lpFilename, __inDWORD nSize );#ifdef UNICODE#define GetModuleFileName GetModuleFileNameW#else#define GetModuleFileName GetModuleFileNameA#endif // !UNICODE

hModule是模块的句柄,或者设置为NULL表示当前模块。lpFilename是保存路径的缓冲区。nSize是缓冲区的大小。 调用函数的例子如下:

//获取当前程序所在路径。 //蔡军生 /12/05 QQ:9073204 深圳 void TestGetExePath(void){ // const int nBufSize = 512;TCHAR chBuf[nBufSize];ZeroMemory(chBuf,nBufSize);//获取当前执行文件的路径。 if (GetModuleFileName(NULL,chBuf,nBufSize)){//输出带文件名称路径。OutputDebugString(chBuf);OutputDebugString(_T(“\r\n”));//获取文件路径。TCHAR* lpStrPath = chBuf;PathRemoveFileSpec(lpStrPath);OutputDebugString(lpStrPath);OutputDebugString(_T(“\r\n”));} }

输出的结果如下: g:\work\windows_api\wincpp2\debug\WinCpp.exe g:\work\windows_api\wincpp2\debug

如果觉得《C++中用 GetModuleFileName()函数 获得程序当前的运行目录》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。