递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 833|回复: 6
打印 上一主题 下一主题

[视窗] 不用dllmain获取模块自身句柄

[复制链接]

310

主题

1411

帖子

5445

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5445
QQ
跳转到指定楼层
楼主
发表于 2023-12-22 21:36:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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. }
复制代码

专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

42

主题

299

帖子

3266

积分

论坛元老

Rank: 8Rank: 8

积分
3266
沙发
发表于 2023-12-22 21:47:01 | 只看该作者
GetModuleHandleExW 这个API可以直接取,看看文档怎么用的
回复

使用道具 举报

50

主题

508

帖子

2048

积分

金牌会员

Rank: 6Rank: 6

积分
2048
板凳
发表于 2023-12-22 21:56:38 | 只看该作者
回复

使用道具 举报

310

主题

1411

帖子

5445

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5445
QQ
地板
 楼主| 发表于 2023-12-22 22:47:03 | 只看该作者
呵呵仙8 发表于 2023-12-22 21:56
API呗!参考这个
https://bbs.125.la/forum.php?mod=viewthread&tid=14055939&extra=

我更新了帖子哦
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

310

主题

1411

帖子

5445

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5445
QQ
5#
 楼主| 发表于 2023-12-22 22:47:50 | 只看该作者
fengshangren 发表于 2023-12-22 21:47
GetModuleHandleExW 这个API可以直接取,看看文档怎么用的

我更新了帖子哦
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

13

主题

143

帖子

1315

积分

金牌会员

Rank: 6Rank: 6

积分
1315
6#
发表于 2023-12-22 23:23:16 | 只看该作者
本帖最后由 793359277 于 2023-12-22 23:32 编辑


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

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


回复

使用道具 举报

310

主题

1411

帖子

5445

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
5445
QQ
7#
 楼主| 发表于 2023-12-23 13:26:02 | 只看该作者
793359277 发表于 2023-12-22 23:23
方法 取当前模块句柄
{
    @ (INT_P)_AtlBaseModule.GetModuleInstance()

不具备通用性,淘汰。

我好像有点印象,好像是在线程上下文 还是什么结构里,存了相关参数。
其中包含了模块句柄。记不太清了。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-17 10:13 , Processed in 0.090758 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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