← 返回文档首页

🎮 按键精灵对接

按键精灵调用 HTTP 接口 + MD5 签名的完整代码。

// === 按键精灵卡密验证示例 ===

// 配置区
Dim API_BASE, USERNAME, APP_NAME, APP_KEY
API_BASE = "https://你的域名"
USERNAME = "你的用户名"
APP_NAME = "a"
APP_KEY = "32位程序密钥"

// MD5 函数(按键精灵自带或自行实现)
// 此处假设已导入 MD5 模块:Plugin md5.MD5

Function GetSign(act, card, mac, app, ts, appKey)
    Dim raw
    raw = act & "|" & card & "|" & mac & "|" & app & "|" & ts & "|" & appKey
    GetSign = LCase(Plugin.md5.MD5(raw))
End Function

Function GetMachineCode()
    // 简单示例:用磁盘序列号做机器码
    Dim disk, wmi
    Set wmi = GetObject("winmgmts:")
    Set disk = wmi.InstancesOf("Win32_DiskDrive")
    For Each d In disk
        GetMachineCode = d.SerialNumber
        Exit Function
    Next
End Function

Function CheckCard(act, card, mac)
    Dim ts, sign, url, http
    ts = DateDiff("s", "1970-01-01 00:00:00", Now)
    sign = GetSign(act, card, mac, APP_NAME, ts, APP_KEY)
    url = API_BASE & "/kami/" & USERNAME & "/check.php" & _
          "?act=" & act & "&app=" & APP_NAME & _
          "&card=" & card & "&mac=" & mac & _
          "&sign=" & sign & "&ts=" & ts
    // 用 http.GetURL 抓 JSON
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.open "GET", url, False
    http.send
    CheckCard = http.responseText
End Function

// === 主流程 ===
Dim card, mac, resp
card = ReadUIConfig("卡密输入框")
mac = GetMachineCode()

// 登录
resp = CheckCard("login", card, mac)
If InStr(resp, """code"":0") > 0 Then
    TracePrint "登录成功"
    // 心跳循环
    Do While True
        Delay 55 * 1000
        resp = CheckCard("heartbeat", card, mac)
        If InStr(resp, """code"":0") = 0 Then
            TracePrint "心跳失败,退出"
            Exit Do
        End If
    Loop
Else
    MessageBox "卡密无效:" & resp
End If