飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 225|回复: 8

[原创] 大漠7.2424破J版 go语言版调用库

[复制链接]
  • TA的每日心情

    2025-1-14 09:31
  • 签到天数: 1438 天

    [LV.10]以坛为家III

    发表于 昨天 07:43 | 显示全部楼层 |阅读模式

    091619j3qqca31wja9er1m.png
    ================================================================================
                            大漠插件 Go 语言封装库
    ================================================================================

    版本: v1.0.0
    日期: 2026-03-18
    仓库: https://github.com/yuan71058/dm72424-go

    ================================================================================
                                      项目简介
    ================================================================================

    本项目是大漠插件(dm.dll)的 Go 语言封装库,将原 C++ 版本的大漠插件接口
    完整翻译为 Go 语言,支持大漠插件 7.2424 版本的所有 428 个函数接口。

    特性:
      - 完整封装 - 支持大漠插件 7.2424 版本全部 428 个函数
      - 开箱即用 - 简单导入即可使用,无需复杂配置
      - 详细注释 - 所有函数都有完整的中文注释
      - 类型安全 - 完整的类型定义,编译时检查
      - 示例丰富 - 提供完整的使用示例

    ================================================================================
                                      目录结构
    ================================================================================

    dm72424-go/
      |-- dmsoft.go           接口定义文件
      |-- dmsoft_impl.go      接口实现文件(428个函数)
      |-- go.mod              Go 模块定义
      |-- Go.dll              破J补丁
      |-- xd47243.dll         大漠插件主文件
      |-- example/            使用示例
      |     |-- main.go       示例代码
      |     |-- go.mod        示例模块
      |-- README.md           Markdown 格式文档
      |-- README.txt          本文档

    ================================================================================
                                      环境要求
    ================================================================================

    - 操作系统: Windows(32位或64位均可)
    - Go 版本: Go 1.16 或更高版本
    - 编译要求: 必须编译为 32 位程序

    ================================================================================
                                      安装方法
    ================================================================================

    方法一:Go Modules(推荐)

      go get github.com/yuan71058/dm72424-go

    方法二:本地引用

      git clone https://github.com/yuan71058/dm72424-go.git

    在 go.mod 中添加:
      replace github.com/yuan71058/dm72424-go => ./dm72424-go

    ================================================================================
                                      编译说明
    ================================================================================

    【重要】大漠插件是 32 位 DLL,必须编译为 32 位程序!

    设置环境变量:
      go env -w GOARCH=386

    编译:
      go build -o myapp.exe

    ================================================================================
                                      快速开始
    ================================================================================

    package main

    import (
        "fmt"
        "log"
        "syscall"

        dmsoft "github.com/yuan71058/dm72424-go"
    )

    func main() {
        // 1. 加载大漠插件
        dmHModule, err := dmsoft.Load("xd47243.dll")
        if err != nil {
            log.Fatal(err)
        }

        // 2. 执行破J(可选)
        goHModule, _ := syscall.LoadLibrary("Go.dll")
        goFunAddr, _ := syscall.GetProcAddress(goHModule, "Go")
        syscall.SyscallN(uintptr(goFunAddr), dmHModule)
        defer syscall.FreeLibrary(goHModule)

        // 3. 创建对象并初始化
        dm := dmsoft.New()
        dm.Init()
        defer dm.Release()

        // 4. 注册
        if dm.Reg("", "") == 1 {
            fmt.Println("注册成功!")
        }

        // 5. 开始使用
        fmt.Printf("版本: %s\n", dm.Ver())
        fmt.Printf("分辨率: %d x %d\n", dm.GetScreenWidth(), dm.GetScreenHeight())
    }

    ================================================================================
                                      核心函数
    ================================================================================

    Load(path string) (uintptr, error)    加载大漠插件 DLL
    Free() bool                           释放大漠插件
    New() *DmSoft                         创建大漠对象
    Init()                                初始化对象
    Release()                             释放对象

    ================================================================================
                                      函数分类
    ================================================================================

    分类            函数数量    主要函数
    ------------------------------------------------------------------------
    窗口操作        ~50        BindWindow, FindWindow, GetWindowRect
    鼠标操作        ~20        MoveTo, LeftClick, GetCursorPos
    键盘操作        ~15        KeyPress, KeyDown, SendString
    图像处理        ~30        Capture, FindPic, LoadPic
    颜色操作        ~15        GetColor, FindColor, CmpColor
    OCR识别         ~20        Ocr, FindStr, SetDict
    内存操作        ~40        ReadInt, WriteInt, FindData
    系统信息        ~20        Ver, GetOsType, GetTime
    文件操作        ~15        ReadFile, WriteFile, IsFileExist
    AI功能          ~10        LoadAi, FindPicAi

    ================================================================================
                                      注意事项
    ================================================================================

    1. 初始化顺序
       必须按照以下顺序初始化:
         dm := dmsoft.New()
         dm.Init()      // 必须调用!
         defer dm.Release()

    2. 窗口绑定
       大部分屏幕操作需要先绑定窗口:
         hwnd := dm.GetForegroundWindow()
         dm.BindWindow(hwnd, "gdi", "normal", "normal", 0)
         // ... 操作 ...
         dm.UnBindWindow()

    3. 管理员权限
       以下功能需要管理员权限:
         - 内存读写操作
         - 某些窗口绑定模式(dx模式)
         - 进程操作

    4. 编码问题
       大漠插件返回的字符串可能是 GBK 编码,需要转换为 UTF-8。

    ================================================================================
                                      常见问题
    ================================================================================

    Q1: 注册失败怎么办?
        - 确保破JDLL已正确加载和执行
        - 检查破JDLL版本是否与大漠插件版本匹配
        - 尝试以管理员权限运行

    Q2: 截图返回黑色图像?
        - 确保已正确绑定窗口
        - 尝试不同的绑定模式(gdi/dx/opengl)
        - 检查窗口是否最小化或被遮挡

    Q3: 找图/找色失败?
        - 检查图片路径是否正确
        - 确保已设置正确的资源路径(SetPath)
        - 调整相似度参数
        - 检查颜色格式是否正确

    Q4: 编译报错 "not a valid Win32 application"?
        - 确保编译为32位程序:go env -w GOARCH=386
        - 大漠插件是32位DLL,不能在64位程序中调用

    ================================================================================
                                      许可证
    ================================================================================

    本项目仅供学习交流使用,请勿用于商业用途。
    大漠插件版权归大漠插件作者所有。

    ================================================================================
                                      联系方式
    ================================================================================

    GitHub: https://github.com/yuan71058/dm72424-go

    ================================================================================

    本帖被以下淘专辑推荐:

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2025-1-8 06:21
  • 签到天数: 900 天

    [LV.10]以坛为家III

    发表于 昨天 08:02 | 显示全部楼层
    谢谢分享我没成功太笨了

    点评

    [mw_shl_code=applescript,true]package main import ( "fmt" "log" dmsoft "github.com/yuan71058/dm72424-go" ) func main() { // 1. 加载大漠插件 _, err := dmsoft.LoadD  详情 回复 发表于 昨天 09:01
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-1-14 09:31
  • 签到天数: 1438 天

    [LV.10]以坛为家III

     楼主| 发表于 昨天 09:01 | 显示全部楼层
    batcd 发表于 2026-3-24 08:02
    谢谢分享我没成功太笨了

    [AppleScript] 纯文本查看 复制代码
    package main
    
    import (
        "fmt"
        "log"
        
        dmsoft "github.com/yuan71058/dm72424-go"
    )
    
    func main() {
        // 1. 加载大漠插件
        _, err := dmsoft.LoadDm("xd47243.dll")//注意填写对路径
        if err != nil {
            log.Fatal(err)
        }
        
        // 2. 破解大漠插件
        err = dmsoft.CrackDm("Go.dll")//注意填写对路径
        if err != nil {
            log.Fatal(err)
        }
        
        // 3. 创建对象并初始化
        dm := dmsoft.New()
        dm.Init()
        defer dm.Release()
        
        // 4. 注册
        if dm.Reg("", "") == 1 {
            fmt.Println("注册成功!")
        }
        
        // 5. 开始使用
        fmt.Printf("版本: %s\n", dm.Ver())
        fmt.Printf("分辨率: %d x %d\n", dm.GetScreenWidth(), dm.GetScreenHeight())
    }

    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-1-13 09:04
  • 签到天数: 339 天

    [LV.8]以坛为家I

    发表于 昨天 09:14 | 显示全部楼层
    PYG21周年生日快乐!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2025-1-8 15:20
  • 签到天数: 91 天

    [LV.6]常住居民II

    发表于 昨天 11:21 | 显示全部楼层
    前两天再别的论坛看到个python版本,是翻译那个了吗

    点评

    翻译的c++  详情 回复 发表于 昨天 16:29
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-14 13:49
  • 签到天数: 393 天

    [LV.9]以坛为家II

    发表于 昨天 12:48 | 显示全部楼层
    PYG21周年生日快乐!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-7-27 18:35
  • 签到天数: 598 天

    [LV.9]以坛为家II

    发表于 昨天 16:00 | 显示全部楼层
    go语言?能在易语言上面用吗?不懂就问

    点评

    不能 易语言有破解版的大漠模块  详情 回复 发表于 昨天 16:29
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-1-14 09:31
  • 签到天数: 1438 天

    [LV.10]以坛为家III

     楼主| 发表于 昨天 16:29 | 显示全部楼层
    haoge 发表于 2026-3-24 11:21
    前两天再别的论坛看到个python版本,是翻译那个了吗

    翻译的c++
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2025-1-14 09:31
  • 签到天数: 1438 天

    [LV.10]以坛为家III

     楼主| 发表于 昨天 16:29 | 显示全部楼层
    yyb1813 发表于 2026-3-24 16:00
    go语言?能在易语言上面用吗?不懂就问

    不能 易语言有破解版的大漠模块
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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