DLL获取当前文件目录和DLL调试方法

28 篇文章 7 订阅
订阅专栏

1.DLL获取文件目录

GetModuleFileName可以获得指定模块的路径,如果传入NULL,则输出所在进程exe的路径,因此在DLL中要想获得当前DLL的路径,必须获得DLL的实例。这样我们才能得到当前DLL的路径,总结可分为如下四种方法,这些方法的不同只在于获得DLL的模块实例句柄方法不同:

//编译器伪变量
void __stdcall GetCurDLLDir()
{
	TCHAR szDir[MAX_PATH];

	HMODULE hModule = reinterpret_cast<HMODULE>(&__ImageBase);
	GetModuleFileName(hModule, szDir, MAX_PATH);
	PathRemoveFileSpec(szDir);

	MessageBox(NULL, szDir, TEXT("GetCurDLLDir-DLL路径名"), MB_OK);
}

//GetModuleHandleEx获得模块句柄
void __stdcall GetCurDLLDir2()
{
	TCHAR szDir[MAX_PATH];
	HMODULE hModule;

	GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPTSTR)GetCurDLLDir2, &hModule);
	if(NULL != hModule)
	{
		GetModuleFileName(hModule, szDir, MAX_PATH);
		PathRemoveFileSpec(szDir);
	}

	MessageBox(NULL, szDir, TEXT("GetCurDLLDir2-DLL路径名"), MB_OK);
}

//ATL
void __stdcall AtlGetCurDLLDir()
{
	TCHAR szDir[MAX_PATH];

	HMODULE hModule = _Module.GetModuleInstance();
	GetModuleFileName(hModule, szDir, MAX_PATH);
	PathRemoveFileSpec(szDir);

	MessageBox(NULL, szDir, TEXT("AtlGetCurDLLDir-DLL路径名"), MB_OK);
}

//全局HMODULE
void __stdcall GlobalGetCurDLLDir()
{
	TCHAR szDir[MAX_PATH];

	HMODULE hModule = g_hModule;
	GetModuleFileName(hModule, szDir, MAX_PATH);
	PathRemoveFileSpec(szDir);

	MessageBox(NULL, szDir, TEXT("GlobalGetCurDLLDir-DLL路径名"), MB_OK);
}


2.调试的方法

调试DLL导出函数,可以借助于微软的rundll32.exe程序 传入待调试的dll模块[空格]函数名即可

本工程配置如下:


演示文件下载链接  访问密码 7ae5

原创,转载请注明来自 http://blog.csdn.net/wenzhou1219

DLL工程获取DLL当前路径
05-11
DLL工程获取DLL当前路径,获取DLL路径然后和配置文件拼接,读取配置文件
补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等
09-24
在确定当前程序被调试后 可使用此函数让系统蓝屏。 慎重使用! .子程序 内存补丁, 逻辑型, 公开, 根据进程名补丁内存,patch已经运行的可执行文件 .参数 进程名, 文本型, , '完整的文件名,注意大小写 .参数 地址,...
C++ 获取dll当前路径下所有文件
^@^lemon tea^@^
08-31 438
C++ 获取dll当前路径下所有文件
获取dll所在目录
lanxch的专栏
11-09 968
    cstring   getapppath()     {     char   exepath[max_path];     cstring   strdir,   tmpdir;         memset(exepath,   0,   max_path);         getmodulefilename(null,   exepath,   max_path);    
获取当前dll或者exe路径
Happinessคิดถึง的博客
04-08 655
** 更新时间:2022-04-08 ** MFC获取当前dll路径(windows版本) void getCurPath() { CString path; TCHAR curPath[MAX_PATH] = { 0 }; GetModuleFileName(AfxGetInstanceHandle(), curPath, MAX_PATH); int index = CString(curPath).ReverseFind('\\'); if (index > 0) { pat
windows平台在dll获取dll所在路径
u012505629的博客
10-16 2031
windows平台在dll获取dll所在路径 最近使用UE4,调试的时候,调用动态库,动态库中的相对路径是从引擎目录出来的,调试很麻烦,于是想了几个方案解决这个相对目录的依赖问题。 1.使用绝对路径。在自己电脑上好调试,其他人就不好用了。 2.新增接口,在exe中传入dll的路径。要新开一个接口,还要确定什么时候传进去,很麻烦 3.在dll获取dll自己的绝对路径。要用的时候就能获取到,使用方便,文件的依赖关系小,不管有几层库嵌套都不增加使用成本 怎么看都觉得第3个更好用,下面是第3个方案的实现: 使
ExtAspNet_v2.3.2_dll
09-29
-增加TabStrip中Tab控件可关闭属性EnableClose(默认为false)以及两个方法GetShowReference和GetHideReference(feedback:anson)。 -修正绑定到Tree的XMLDocument中Icon属性映射错误(feedback:nopnop9)。 -修正...
vc++ 应用源码包_6
09-15
详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...
.net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法
03-08
///FileSize()获取上传文件大小 ///FileUpload()文件上传 路径upload/ 自动重命名 ///FileDownload()文件下载 调用方法FileDownload(Response,Server,文件虚拟路径) ///FileTxtWrite()写入TXT文本 给出...
cmd操作命令和linux命令大全收集
04-24
xcopy 要复制的文件或目录树 目标地址目录名 复制文件和目录树,用参数/Y将不提示覆盖相同文件 用参数/e才可连目录下的子目录一起复制到目标地址下。 tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exec...
dll中如何得到自身路径(指的是dll路径)
startexcel的专栏
07-18 1775
如是mfc dllchar fn[MAX_PATH]={0};::GetModuleFileName(AfxGetStaticModuleState()->m_hCurrentInstanceHandle,fn,MAX_PATH);如果win32 dllGetModuleFileName(g_hInstance,fn,MAX_PATH);  
vbnet 获取当前.NET程序所在的目录
laocooon的博客
07-25 1020
''' <summary> ''' 获取当前.NET程序所在的目录 ''' </summary> ''' <returns>返回当前.NET程序所在的目录</returns> Function GetCurrentPath() As String Dim moudle = System.Reflection.Assembly.GetExecutingAss...
QT获取程序当前路径
qq_41114670的博客
11-04 1597
使用QCoreApplication类里面的方法
动态链接库内检测自己dll文件存放目录的方法
gyjdk0601的专栏
08-02 1085
动态链接库内检测自己dll文件存放目录的方法: 找了很久,原来超级简单,哈哈 只有几行代码: 在库的初始化中,加入如下代码:          ::AFX_MANAGE_STATE(AfxGetStaticModuleState());          GetModu
使用GetModuleFileName函数获取当前程序所在目录
热门推荐
milanleon的专栏
01-10 3万+
GetModuleFileName() 获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。如果想要获取另一个已加载模块的文件路径,可以使用GetModuleFileNameEx函数。     函数原型: DWORD WINAPI GetModuleFileName( _In_opt_  HMODULE hModule, //应用程序或DLL模块实例句柄,NULL则为获取
GetModuleFileName()获取程序路径
rwerty的博客
10-09 2535
API函数GetModuleFileName():获得应用程序目录相对路径 MFC函数GetModuleFileName():获得应用程序目录绝对路径 采用.\\也能获得应用程序当前目录 当前目录不一定等于应用程序执行文件的所在目录,一个应用程序被启动时,当前目录是可以被任意设置的。 GetModuleFileName()得到模块的完整路径名,例如,你载入c:\window
如何获取DLL自身的路径
chen1990720的专栏
01-07 1280
BOOL CABCApp::InitInstance() { CWinApp::InitInstance(); /* GetModuleFileName(NULL,InitPath,MAX_PATH); *(strrchr(InitPath,'\\')+1) = '\0'; strcat(InitPath,"MainKey.INI"); *///上面取的是
dll 加载相对目录
最新发布
09-01
只需要将 DLL 文件和程序一起放在同一个相对目录中,程序就可以正确加载所需的 DLL。 使用相对目录加载 DLL 时,需要注意以下几点: 1. 确保 DLL 文件和程序在同一个相对目录中。如果 DLL 文件不在相对目录中,程序...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 深入了解Windows句柄到底是什么 98210
  • 深入Windows窗体原理及控件重绘技巧 30034
  • 3.Pylon 以实时图像采集讲解PylonC SDK使用流程 27558
  • Agilent函数发生器编程(Agilent IO Suite使用) 26548
  • 1.Pylon 编程环境设置 24180

分类专栏

  • 图与安全
  • Nebula Graph 1篇
  • 云计算
  • K8S 1篇
  • Windows
  • 精通Windows编程 28篇
  • COM教程 23篇
  • PMAC运动控制 12篇
  • MIL教程 11篇
  • 工业设备编程 7篇
  • 界面库技术详解 2篇
  • 调试 8篇
  • 大数据
  • Hadoop 9篇
  • Spark 5篇
  • Flink 1篇
  • hbase详解 11篇
  • ClickHouse 1篇
  • hive 2篇
  • Kafka 3篇
  • Zookeeper 1篇
  • AI 2篇
  • 算法 4篇
  • 前端小白课 2篇
  • 数据结构 17篇
  • 操作系统 2篇
  • mysql 1篇
  • 语言
  • PHP 3篇
  • Python 8篇
  • Golang 26篇
  • C/C++ 8篇
  • Java 5篇
  • Scala 2篇
  • 杂货铺 3篇

最新评论

  • 1.MIL 编程环境设置

    qq_46151533: 大佬,运行显示无法加载 DLL“mil.dll”: 找不到指定的模块。怎么处理啊?

  • 11.MIL中测量模块(Measurement)

    weixin_38585804: 楼主,在使用中有没发现,只更改box的大小会影响到边缘的提取,这是为什么

  • 6.PMAC下位机-下位机编程

    kkjob.: 用pewin32pro软件运行程序显示Debubgger can only debug PLC programs. The program in this file is not a PLC program.请问这是什么原因,改怎么处理呢?

  • 12.PMAC上位机-中断通信(下位机通知上位机)

    weixin_48063273: 对于Linux系统,泰道科技(Delta Tau Data Systems)可能提供了其他形式的接口,例如他们可能有针对Linux的命令行工具或者原生的C/C++库。你应该查阅最新的PMAC产品文档或者联系供应商获取相应的Linux驱动和编程接口,以实现Linux系统下与PMAC控制卡的连接和通信。 像这个linux的底层接口有吗?

  • Flink 代码混淆

    文大侠666: 暂时没遇到

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 4.maven 镜像和私有仓库使用
  • 升职加薪的机会——ChatGPT辅助程序开发
  • ChatGPT 最佳实践,成为驾驭AI的人
2023年11篇
2022年9篇
2021年15篇
2020年4篇
2019年38篇
2018年15篇
2017年22篇
2016年24篇
2015年12篇
2014年34篇
2013年17篇
2012年8篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网怀旧电影农村合作社起名字男孩起名叫澈腾讯微博麻辣烫怎么起店名刘闳genuineleather羽生结弦女友昌字开头公司起名占卜起名称顶好加盟锚文本粤语起名心理测试题目教师政治学习笔记起名软件哪个有哪些华硕笔记本哪款好孟起名字男孩侯姓怎么起名字寓意好不灭战神始于梦属狗的年份适合男孩的名字给男孩起名字大全刺客伍六七第二季免费观看起名网免费开店取名1987年属兔起名字宜用名字如何压缩文件ps2中文游戏养殖公司起名字大全免费游戏公司起名汐字取名女孩起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化