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

  1. DWORD WINAPI GetModuleFileName(
  2. HMODULE hModule,
  3. LPTSTR lpFileName,
  4. DWORD nSize
  5. );

hModule:要获取文件名的模块名柄,null表示当前模块
lpFileName:输出参数,存放取得的文件名
nSize:lpFileName参数的长度

  1. void FileName()
  2. {
  3. TCHAR lpFileName[MAX_PATH];
  4. ::GetModuleFileName(null, lpFileName, MAX_PATH);
  5. SetDlgItemText(IDC_TEXTBOX, lpFileName);
  6. }
在开发软件的过程里,经常需要把数据保存到当前执行文件路径下面,或者读取当前执行文件路径下的一些配置信息。这时就需要从当前模块里获取所在的目录路径,以便进行固定的位置操作文件。要解决这个需求,就需要调用API函数GetModuleFileName来获取模块所在的路径。
函数GetModuleFileName声明如下:
  1. WINBASEAPI
  2. DWORD
  3. WINAPI
  4. GetModuleFileNameA(
  5. __in_opt HMODULE hModule,
  6. __out_ecount_part(nSize, return + 1) LPCH lpFilename,
  7. __in DWORD nSize
  8. );
  9. WINBASEAPI
  10. DWORD
  11. WINAPI
  12. GetModuleFileNameW(
  13. __in_opt HMODULE hModule,
  14. __out_ecount_part(nSize, return + 1) LPWCH lpFilename,
  15. __in DWORD nSize
  16. );
  17. #ifdef UNICODE
  18. #define GetModuleFileName GetModuleFileNameW
  19. #else
  20. #define GetModuleFileName GetModuleFileNameA
  21. #endif // !UNICODE
hModule是模块的句柄,或者设置为NULL表示当前模块。
lpFilename是保存路径的缓冲区。
nSize是缓冲区的大小。
调用函数的例子如下:
  1. //获取当前程序所在路径。
  2. //蔡军生 2007/12/05 QQ:9073204 深圳
  3. void TestGetExePath(void)
  4. {
  5. //
  6. const int nBufSize = 512;
  7. TCHAR chBuf[nBufSize];
  8. ZeroMemory(chBuf,nBufSize);
  9. //获取当前执行文件的路径。
  10. if (GetModuleFileName(NULL,chBuf,nBufSize))
  11. {
  12. //输出带文件名称路径。
  13. OutputDebugString(chBuf);
  14. OutputDebugString(_T(“\r\n”));
  15. //获取文件路径。
  16. TCHAR* lpStrPath = chBuf;
  17. PathRemoveFileSpec(lpStrPath);
  18. OutputDebugString(lpStrPath);
  19. OutputDebugString(_T(“\r\n”));
  20. }
  21. }
输出的结果如下:
g:\work\windows_api\wincpp2\debug\WinCpp.exe
g:\work\windows_api\wincpp2\debug

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

  1. MFC获得当前应用程序目录的GetCurrentDirectory()和GetModuleFileName()函数

    在 开发过程中经常需要获得程序当前的运行目录,这时就可以使用GetCurrentDirectory()和GetModuleFileName()函 数,GetCurrentDirectory只是返回当前 ...

  2. VC中使用GetModuleFileName获取应用程序路径

    .//与API函数GetModuleFileName获取应用程序目录有何不一样? 采用.//也能获得应用程序目录,采用GetModuleFileName也能获得,二者有何不同? 一样! 一个是相对路径 ...

  3. mysql plsql循环语句吗,Oracle PLSQL 在游标中用while循环实例程序

    Oracle PLSQL 在游标中用while循环实例程序 Oracle PLSQL 在游标中用while循环实例程序 Oracle PLSQL 在游标中用while循环实例程序 declare cu ...

  4. Oracle编程入门经典 第11章 过程、函数和程序包

    目录 11.1          优势和利益... 1 11.2          过程... 1 11.2.1       语法... 2 11.2.2       建立或者替换... 2 11.2 ...

  5. python语言中不用来定义函数的关键字_Python 语言中用来定义函数的关键字是

    Python 语言中用来定义函数的关键字是 答:def 调查问卷采集是数据采集人员通过设计具有针对性的问卷,采用方式进行信息采集 答:以上都是 中国大学MOOC: 突出重点,必须以解决问题为目标.也就 ...

  6. wnoise matlab,MATLAB中用wnoise函数测试去噪算法

    MATLAB中用wnoise函数测试去噪算法 sqrt_snr=3; init=231434; [x,xn]=wnoise(3,11,sqrt_snr,init); % WNOISE generate ...

  7. Java中用split函数进行分割字符串。

    Java中用split函数进行分割字符串. 1.语法如下 String.split(sourceStr,maxSplit) String.split(sourceStr) 参数说明:sourceStr ...

  8. itpt_TCPL 第四章:函数和程序结构

    2016.08.30 – 10.09 个人英文阅读练习笔记(极低水准). 08.30 第四章:函数和程序结构 函数能够将大型的计算任务分解为多个小型的计算任务,并且程序员还能够利用别人已经编写好的函数 ...

  9. EXCEL中用TEXT函数将文本转换成日期

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! EXCE ...

最新文章

  1. 基于JDK1.8---HashMap源码分析
  2. 人工智能之自然语言的从新思考
  3. 部署时服务端Excel的COM设置
  4. linux malloc 线程,Linux上的侧线程的malloc/calloc崩溃
  5. CentOS7下安装Tomcat
  6. 如果云是水滴,Kubernetes就是水滴管理平台
  7. 微博html怎么编辑器,类似新浪微博的编辑器 输入@就出现可选的下拉框 是怎么实现的...
  8. 文本相似度-bm25算法原理及实现
  9. 004 - PHP git
  10. Exchange 2013 、Lync 2013、SharePoint 2013
  11. 商标注册流程与注意事项
  12. 知识蒸馏 | 综述: 网络结构搜索应用
  13. ArcGIS 拓扑验证与编辑共享要素
  14. 联想笔记本prtsc不能截图_联想笔记本截图快捷键
  15. 传教士 野人 过河问题
  16. 《致加西亚的一封信》读后感
  17. 塞规公差带图_塞规公差计算表
  18. arXiv,30 岁生日快乐!它的诞生,始于一个​被塞满的邮箱
  19. OpenCV学习笔记(三)——图像像素(图像的最大(小)值、均值、标准差、比较运算、逻辑运算、图像二值化)
  20. Exception(一)

热门文章

  1. Python实现点阵字体读取与转换
  2. 正则 [.\n]* (.|\n)* 区别
  3. 项目管理-项目开发相关
  4. Python数据分析19——matplotlib可视化(一)之线形图
  5. BBS 与 BLog(博客)的区别到底是什么?[转载]
  6. 讨论IOS开发以及自己的经验
  7. 驼峰命名法(CamelCase)和下划线命名法(UnderScoreCase)之间的转换
  8. 解决git clone提示Permission denied publickey 问题
  9. 【计算机网络】知识点整理 第四章 网络层(王道考研视频学习记录)
  10. 聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法