【Windows】DLL中获取自身的句柄
来源:互联网 发布:怎么手机淘宝开店认证 编辑:程序博客网 时间:2024/05/06 04:45
由于 dll 自身无法执行,需要别的程序调用。
这样就造成了如下问题:如果想在 dll 中获取 dll 自身的路径、名称,就不好办了!
GetCurrentDirectory() 只能获取到调用主程序的路径;GetModuleFileName() 只能得到 dll 的句柄后才能工作;
写死在参数里倒是可以用,但是如果改变名称,就会失效,相当于在程序里埋了一颗雷!
HMODULE hMod = GetModuleHandle(_T("ntdll.dll"));
最后终于找到了方法:
方法1:
注意:TRUE会导致DLL引用计数加1,FALSE不会改变引用计数,通常用FALSE HMODULE GetCurrentModule(BOOL bRef/* = FALSE*/) { HMODULE hModule = NULL; if (GetModuleHandleEx(bRef ? GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS : (GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), (LPCSTR)GetCurrentModule, &hModule)) { return hModule; } return NULL; }
方法2:
参考:http://blog.csdn.net/yaosan/article/details/3459756 HMODULE GetSelfModuleHandle() { MEMORY_BASIC_INFORMATION mbi; return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE) mbi.AllocationBase : NULL); }
======> DLL中如何获取自身的句柄 <======
1 0
- 【Windows】DLL中获取自身的句柄
- DLL中如何获取自身的句柄
- DLL中如何获取自身的路径
- 在DLL中获取自身的路径
- DLL中如何获取自身的路径
- 在VC中获取当前DLL自身的路径
- 关于在DLL中获取主调用窗口的句柄
- Windows 的动态链接库(DLL)中获得dll自身的名称
- 如何获取DLL自身的路径
- dll获取自身路径的几种方法
- MFC规则dll中获取当前模块句柄
- 在DLL中获取主进程窗口句柄
- 在DLL中获取主进程窗口句柄
- VC中获取软件自身的版本号
- Android中获取手机自身的信息
- windows获取控制台窗口的句柄
- 获取DLL的模块的句柄的简单方法
- windows获取桌面句柄
- Android 集成pdf
- 沈阳东软睿道实训心得-xx-燕山大学Java1班
- (0005) iOS 开发之WebViewJavascriptBridge的升级问题
- CODEVS 1299 切水果(线段树||并查集)
- JavaScript 中变量、作用域和内存问题的学习
- 【Windows】DLL中获取自身的句柄
- Hbuilder 安装git插件 实时管理分支branch
- eclipse快捷键之-----如何在光标前后添加空行
- C语言面试题1
- 视觉SLAM漫谈(二):图优化理论与g2o的使用
- 数据结构与算法习题 Expression Expression tree Expression evaluation(栈与树结构综合)
- elasticsearch在重启机器后出现[transport.netty][solr001] exception caught on transport layer[[[id:0x2d16759]]
- spoj2 Prime Generator
- Centos查看端口占用情况和开启端口命令