DUMP提取DNF易语言的提取图标
以下是使用易语言结合`DUMP`相关思路来提取DNF(地下城与勇士)图标的一般步骤和示例代码: 实现思路 1. 获取DNF进程信息:找到DNF进程的句柄,为后续操作做准备。 2. 查找图标资源:在进程的资源中查找图标资源。 3. 提取图标:将找到的图标资源提取出来保存为文件。 易语言代码示例 ```e .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 提取DNF图标 () .子程序 提取DNF图标 .局部变量 进程ID, 整数型 .局部变量 进程句柄, 整数型 .局部变量 图标资源句柄, 整数型 .局部变量 图标数据, 字节集 .局部变量 保存路径, 文本型 ' 获取DNF进程ID 进程ID = 寻找指定进程 (“DNF.exe”) .如果真 (进程ID = 0) 信息框 (“未找到DNF进程!”, 0, , ) 返回 () .如果真结束 ' 打开进程 进程句柄 = 打开进程 (进程ID) .如果真 (进程句柄 = 0) 信息框 (“无法打开DNF进程!”, 0, , ) 返回 () .如果真结束 ' 查找图标资源 图标资源句柄 = 查找图标资源 (进程句柄) .如果真 (图标资源句柄 = 0) 信息框 (“未找到图标资源!”, 0, , ) 关闭进程句柄 (进程句柄) 返回 () .如果真结束 ' 提取图标数据 图标数据 = 提取图标数据 (进程句柄, 图标资源句柄) .如果真 (取字节集长度 (图标数据) = 0) 信息框 (“提取图标数据失败!”, 0, , ) 关闭进程句柄 (进程句柄) 返回 () .如果真结束 ' 保存图标文件 保存路径 = 取运行目录 () + “\DNF图标.ico” 写到文件 (保存路径, 图标数据) 信息框 (“图标提取成功,保存路径:” + 保存路径, 0, , ) ' 关闭句柄 关闭进程句柄 (进程句柄) 关闭资源句柄 (图标资源句柄) .子程序 寻找指定进程, 整数型 .参数 进程名, 文本型 .局部变量 进程列表, 进程信息, 0 .局部变量 i, 整数型 枚举系统进程 (进程列表) .计次循环首 (取数组成员数 (进程列表), i) .如果真 (进程列表 [i].进程名称 = 进程名) 返回 (进程列表 [i].进程ID) .如果真结束 .计次循环尾 () 返回 (0) .子程序 打开进程, 整数型 .参数 进程ID, 整数型 返回 (OpenProcess (PROCESS_ALL_ACCESS, 假, 进程ID)) .子程序 查找图标资源, 整数型 .参数 进程句柄, 整数型 .局部变量 模块句柄, 整数型 .局部变量 资源信息, 资源信息 .局部变量 i, 整数型 模块句柄 = GetModuleHandleA (0) 枚举资源类型 (进程句柄, 模块句柄, 资源信息) .计次循环首 (取数组成员数 (资源信息), i) .如果真 (资源信息 [i].资源类型 = RT_GROUP_ICON) 返回 (资源信息 [i].资源ID) .如果真结束 .计次循环尾 () 返回 (0) .子程序 提取图标数据, 字节集 .参数 进程句柄, 整数型 .参数 图标资源句柄, 整数型 .局部变量 资源数据, 字节集 .局部变量 资源大小, 整数型 资源大小 = 查找资源大小 (进程句柄, 图标资源句柄) 资源数据 = 取空白字节集 (资源大小) 读取资源数据 (进程句柄, 图标资源句柄, 资源数据) 返回 (资源数据) .子程序 关闭进程句柄 .参数 进程句柄, 整数型 CloseHandle (进程句柄) .子程序 关闭资源句柄 .参数 资源句柄, 整数型 CloseHandle (资源句柄) ``` 代码说明 1. 寻找指定进程:通过`枚举系统进程`函数查找DNF进程的ID。 2. 打开进程:使用`OpenProcess`函数打开DNF进程,获取进程句柄。 3. 查找图标资源:枚举进程的资源类型,查找`RT_GROUP_ICON`类型的资源。 4. 提取图标数据:读取图标资源的数据。 5. 保存图标文件:将提取的图标数据保存为`.ico`文件。 注意事项 - 代码中的`OpenProcess`、`GetModuleHandleA`、`CloseHandle`等函数是Windows API函数,需要确保易语言支持库中包含这些函数的声明。 - 由于DNF可能有反作弊机制,直接提取图标可能会触发安全检测,在实际使用时需要注意。 [2026-01-31 18:17:06 | AI问答 | 1297点数解答]
- [DeepSeek] .版本 2 .子程序 _超级按钮1_被单击 .局部变量 dump, 字节集 进程ID = 取进程ID (“dnf.exe”) .判断开始 (进程ID > 0) dump = 读内存字节集 (进程ID, 5368709120, 300 × 1024 × 1024) .判断开始 (dump ≠ { }) 写到文件 (取运行目录 () + “\” + 到文本 (取年份 (取现行时间 ())) + 到文本 (取月份 (取现行时间 ())) + 到文本 (取日 (取现行时间 ())) + “dump.exe”, dump) .默认 信息框 (“数据获取失败”, 0, , ) .判断结束 .默认 信息框 (“请先登录游戏”, 0, , ) .判断结束 返回 () 写出“dump.exe”它的图标(466点数解答 | 2026-01-15 19:11:28)19
- [DeepSeek] .版本 2 .子程序 _超级按钮1_被单击 .局部变量 dump, 字节集 进程ID = 取进程ID (“dnf.exe”) .判断开始 (进程ID > 0) dump = 读内存字节集 (进程ID, 5368709120, 300 × 1024 × 1024) .判断开始 (dump ≠ { }) 写到文件 (取运行目录 () + “\” + 到文本 (取年份 (取现行时间 ())) + 到文本 (取月份 (取现行时间 ())) + 到文本 (取日 (取现行时间 ())) + “dump.exe”, dump) .默认 信息框 (“数据获取失败”, 0, , ) .判断结束 .默认 信息框 (“请先登录游戏”, 0, , ) .判断结束 返回 () (268点数解答 | 2026-01-13 11:45:45)19
- [字节豆包] .版本 2 .子程序 _超级按钮1_被单击 .局部变量 dump, 字节集 进程ID = 取进程ID (“dnf.exe”) .判断开始 (进程ID > 0) dump = 读内存字节集 (进程ID, 5368709120, 300 × 1024 × 1024) .判断开始 (dump ≠ { }) 写到文件 (取运行目录 () + “\” + 到文本 (取年份 (取现行时间 ())) + 到文本 (取月份 (取现行时间 ())) + 到文本 (取日 (取现行时间 ())) + “dump.exe”, dump) .默认 信息框 (“数据获取失败”, 0, , ) .判断结束 .默认 信息框 (“请先登录游戏”, 0, , ) .判断结束 返回 () 加上提取图标(954点数解答 | 2026-01-31 18:29:28)6
- [百度文心] 在java开发中,如何使用thread dump?你将如何分析thread dump?(520点数解答 | 2023-11-09 17:17:45)244
- [阿里通义] 改写“jdk是sun公司java应用程序和组件的开发环境,是编译和测试工具,也是提供java程序的java虚拟机平台,是调试和运行jsp所不可缺少的工具。 首先在安装前先要下载jdk,这可以从sun公司的网站上下载,到http://java.sun.com/products/jdk/1.8这个页面下载jdk1.8.2-001-win.exe或jdk 1.3-win.exe,由于笔者n.exe为例。下载后,双击jdk1.8.2-001-win.exe就可以开始安装了,在安装过程中有很多选项,按个人需求正确选择,这里我们以第一次安装为例,全部选择默认配制即可,安装的默认路径为[windows所在的根目录(以下设为c:)]\jdk1.8.2,安装完毕后就可以重新启动了。 启动时要更新环境变量,在开机时要自动调用jdk系统,因此要设置一些环境变量,我们以windows2000 server版系统为例进行系统环境变量设置(在windows 9x系统中可在autoexe.txt中进行设置)。设置方法如下: 在桌面上,用鼠标右键单击[我的电脑]图标,选择[属性]按钮,弹出[系统特性]对话匡,选择[高(376点数解答 | 2024-03-06 17:27:29)336
- [百度文心] 在java开发中,简述java 中你如何转储线程(thread dump)?(497点数解答 | 2023-11-09 17:21:28)219
- [字节豆包] 版本 2 .支持库 EThread 进程ID = 取进程ID (进程组合框.取项目文本 (进程组合框.现行选中项)) 进程句柄 = 进程_打开 (进程ID) DUMP = 读内存字节集 (进程ID, 十六到十 (“140001000”), 300 × 1024 × 1024) ' 200M 数量 = 0 处理事件 () 程序_延时 (10) 强制结束线程 (E线程) 提示标签.标题 = “正在获取 启动线程 (&获取C语言格式基址, , C线程) 写一个高质量的易语言多线程(790点数解答 | 2025-11-28 03:08:24)27
- [字节豆包] 版本 2 .支持库 EThread 进程ID = 取进程ID (进程组合框.取项目文本 (进程组合框.现行选中项)) 进程句柄 = 进程_打开 (进程ID) DUMP = 读内存字节集 (进程ID, 十六到十 (“140001000”), 300 × 1024 × 1024) ' 200M 数量 = 0 处理事件 () 程序_延时 (10) 强制结束线程 (E线程) 提示标签.标题 = “正在获取 启动线程 (&获取C语言格式基址, , C线程) 写一个高质量的多线程(677点数解答 | 2025-11-28 03:12:31)35
- [GPT] 易语言 如何写冒泡算法(763点数解答 | 2024-01-17 16:57:54)341
- 易语言 如何写冒泡算法(690点数解答 | 2024-01-17 16:58:30)277
- [百度文心] 易语言 如何写冒泡算法(268点数解答 | 2024-01-17 16:58:40)289
- 易语言 如何写冒泡算法(441点数解答 | 2024-01-17 16:58:59)270