递归火山软件开发平台

标题: 不用dllmain获取模块自身句柄 [打印本页]

作者: urenai    时间: 2023-12-22 21:36
标题: 不用dllmain获取模块自身句柄
本帖最后由 urenai 于 2023-12-22 22:54 编辑


有什么好办法吗?





忘记贴代码了!!!
除了下述方式,还有别的办法吗?
仅讨论手段?

  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 方法 取当前模块句柄 <公开 静态 类型 = 变整数 返回值注释 = "返回模块句柄" @禁止流程检查 = 真 @视窗.外部头文件 = "psapi.h" @视窗.外部库 = "Psapi.lib">
  3. 参数 文件名 <类型 = 文本型 注释 = "返回文件名" @默认值 = 空对象>
  4. 参数 路径 <类型 = 文本型 注释 = "返回路径" @默认值 = 空对象>
  5. {
  6.     @ static HMODULE hModule = 0;
  7.     @ if (!GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,(LPCWSTR)&hModule,(HMODULE *)&hModule)){return 0;}
  8.     @ if (!hModule){return 0;}
  9.     @ char szProcessName[1024]={},szModName[1024]={};
  10.     @ if (GetModuleBaseNameW((HANDLE)-1,hModule,(LPWSTR)szProcessName,1024)){@<文件名>.SetText ((const TCHAR*)szProcessName);}
  11.     @ if (GetModuleFileNameW(hModule,(LPWSTR)szModName,1024)){@<路径>.SetText ((const TCHAR*)szModName);}
  12.     @ return (INT_P)hModule;
  13. }
复制代码


作者: fengshangren    时间: 2023-12-22 21:47
GetModuleHandleExW 这个API可以直接取,看看文档怎么用的
作者: 呵呵仙8    时间: 2023-12-22 21:56
API呗!参考这个
https://bbs.125.la/forum.php?mod ... 14055939&extra=
作者: urenai    时间: 2023-12-22 22:47
呵呵仙8 发表于 2023-12-22 21:56
API呗!参考这个
https://bbs.125.la/forum.php?mod=viewthread&tid=14055939&extra=

我更新了帖子哦
作者: urenai    时间: 2023-12-22 22:47
fengshangren 发表于 2023-12-22 21:47
GetModuleHandleExW 这个API可以直接取,看看文档怎么用的

我更新了帖子哦
作者: 793359277    时间: 2023-12-22 23:23
本帖最后由 793359277 于 2023-12-22 23:32 编辑


<火山程序 类型 = "通常" 版本 = 1 />

方法 取当前模块句柄 <公开 静态 类型 = 变整数 @嵌入式方法 = "">
{
    @ (INT_P)_AtlBaseModule.GetModuleInstance()
}



作者: urenai    时间: 2023-12-23 13:26
793359277 发表于 2023-12-22 23:23
方法 取当前模块句柄
{
    @ (INT_P)_AtlBaseModule.GetModuleInstance()

不具备通用性,淘汰。

我好像有点印象,好像是在线程上下文 还是什么结构里,存了相关参数。
其中包含了模块句柄。记不太清了。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4