VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 175|回复: 7

GetModuleFileName 相关

[复制链接]
99_avatar_middle
最佳答案
1 
online_vip 发表于 2020-2-5 11:26:33 | 显示全部楼层 |阅读模式
  1. CString strCurPath;
  2.         GetModuleFileName(NULL, strCurPath.GetBuffer(MAX_PATH), MAX_PATH);
复制代码

我知道的是 GetModuleFileName 这个参数 有没办法不分割直接返回缓冲区里程序目录,不要带上EXE.   或者有没类似的函数直接获取的,不然还要二次分割




上一篇:VC++基础班-[14]再论“逃跑”按钮的实现课程中,逃跑按钮会卡顿,不是很理想?
下一篇:VC++基础班-[15]通用对话框讲解,为什么我按老师的代码实现的文件框不是居中的?
51_avatar_middle
最佳答案
82 
online_admins 发表于 2020-2-5 17:05:10 | 显示全部楼层
这个帖子应该能解决你的问题:
GetCurrentDirectory的问题及GetModuleFileName和PathRemoveFileSpec的解决办法!
https://www.cctry.com/thread-289699-1-1.html

还有这个:
VC++文件路径和文件名处理函数 非常有用!
https://www.cctry.com/thread-298981-1-1.html
75_avatar_middle
最佳答案
18 
online_supermod 发表于 2020-2-5 11:52:08 | 显示全部楼层
GetModuleFileName
获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
如果想要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx函数。
如果返回为成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果所设的nSize过小,那么返回仅按所设置缓冲区大小返回相应字符串内容。
如果函数失败,返回值将为0,利用GetLastError可获得异常代码。
我不太确定你说的二次分割的意思,  这个是你的 GetModuleFileName(NULL, strCurPath.GetBuffer(MAX_PATH), MAX_PATH);
通常我是这么写的GetModuleFileName( NULL, szPath, MAX_PATH )你可以试试,不确定能帮到你
99_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-2-5 13:29:45 | 显示全部楼层
wl1383838438 发表于 2020-2-5 11:52
GetModuleFileName
获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
如果想要获取 ...

我的意思不要完整路径,例如 C:\A\B\123.EXE    我只要C:\A\B   就是类似不保存程序自身名字
75_avatar_middle
最佳答案
18 
online_supermod 发表于 2020-2-5 13:37:31 | 显示全部楼层
风度猫 发表于 2020-2-5 13:29
我的意思不要完整路径,例如 C:\A\B\123.EXE    我只要C:\A\B   就是类似不保存程序自身名字

函数返回值
如果返回为成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果所设的nSize过小,那么返回仅按所设置缓冲区大小返回相应字符串内容。   你的BUFFER不要设置那么大就行了,设置小点就可以啊!你用了最大的路径BUFFER 肯定全给你获取了 你把buffer设置小点即可
99_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-2-5 14:06:55 | 显示全部楼层
wl1383838438 发表于 2020-2-5 13:37
函数返回值
如果返回为成功,将在lpFileName的缓冲区当中返回相应模块的路径,如果所设的nSize过小,那 ...

..设置多小?路径长度又不是固定的,你软件随机放个文件  设置多小?这总有个标准吧
这个好像不是解决办法吧
99_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-2-5 18:52:26 | 显示全部楼层
Syc 发表于 2020-2-5 17:05
这个帖子应该能解决你的问题:
GetCurrentDirectory的问题及GetModuleFileName和PathRemoveFileSpec的解决 ...

嗯谢谢,15年办的会员,最近疫情,放假2月.才开始有时间看,看看2月时间入门下
99_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-2-5 19:44:58 | 显示全部楼层
Syc 发表于 2020-2-5 17:05
这个帖子应该能解决你的问题:
GetCurrentDirectory的问题及GetModuleFileName和PathRemoveFileSpec的解决 ...

折腾半天也没折腾明白GetCurrentDirectory  这个好像不能目录里有中文出现
其他的太多了 试了下暂时没找到解决办法  等闲了再折腾  我暂时的办法是
  1. CString strCurPath;
  2.         GetModuleFileName(NULL, strCurPath.GetBuffer(MAX_PATH), MAX_PATH);
  3.         strCurPath.ReleaseBuffer();//Must ReleaseBuffer, or GetLength=0
  4.         int nPos = strCurPath.ReverseFind(_T('\\'));
  5.         strCurPath = strCurPath.Left(nPos + 1);
复制代码

先获取 然后分割实现的
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-27 14:44

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表