插件开发手册

插件产品介绍
Game-Plug 是一款功能强大的 Windows 逆向开发插件,兼容 VC++、Delphi、VB、按键精灵、火山 PC、等多种编程语言调用。它面向编程人员提供窗口、内存、线程、汇编、HOOK、注入、Call、按键、封包、驱动防检测等全方位操作命令,并配有对应的使用案例示范,简单易学、上手快、实用性强。
目录导航

设置授权码 - SetUsername

接口 ID 14 | 分类:授权码管理 | 免费功能

作用说明

设置授权码(形如 U12-M7GBPL94GLUA9B7G)。必须在调用任何收费功能(如超级Hook相关命令)之前调用一次;不调用则收费功能会失败。返回是否设置成功。授权码从官网 https://www.game-plug.cn/ 获取。

参数说明
参数名方向类型说明
username[in]string (BSTR)授权码字符串,形如 U12-M7GBPL94GLUA9B7G(从官网获取)。长度上限 64 个字符,超长会被拒绝;空串会被当作设置失败处理。
VC++ 调用示例(x64,控制台工程)
// 说明:本示例为完整 x64 控制台工程,整段复制覆盖新建控制台工程的 main.cpp 即可编译运行。
//   1. VS2019 新建「控制台应用」,项目属性 -> 平台选 x64,才能加载 64 位 DLL。
//   2. 项目属性 -> C/C++ -> 预编译头 -> 改为「不使用预编译头」,否则默认找 pch.h 会报 C1010。
//   3. 把 x64Game-Plug.dll 放到 exe 同目录(#import 与免注册加载都需要)。
//   4. 源码保存为 UTF-8 带 BOM,避免中文乱码;全站用 regsvr32 注册也可(需管理员)。
#include <iostream>
#include <clocale>
#include <windows.h>
#include <comdef.h>
// 免注册加载:用 IGamePlug 智能指针装载
// rename 是为避开 windows.h 的 FindWindow 宏冲突,接口里的 FindWindow 在 C++ 侧改名为 FindWindowGP
#import "x64Game-Plug.dll" no_namespace rename("FindWindow", "FindWindowGP")
static HMODULE      g_hDll = NULL;
static IGamePlugPtr g_plug;
// ---------- 免注册:加载 DLL 并创建对象(发布时把 DLL 放 exe 同目录)----------
static bool LoadPlug() {
    const wchar_t* paths[] = {
        L"x64Game-Plug.dll",
        L"..\\x64Game-Plug.dll"
    };
    for (int i = 0; i < (int)(sizeof(paths) / sizeof(paths[0])); ++i) {
        g_hDll = ::LoadLibraryW(paths[i]);
        if (g_hDll) break;
    }
    if (!g_hDll) {
        std::cout << "LoadLibrary failed: put x64Game-Plug.dll next to the exe" << std::endl;
        return false;
    }
    typedef HRESULT (__stdcall *GamePlugCreateFn)(IGamePlug**);
    GamePlugCreateFn fn = (GamePlugCreateFn)::GetProcAddress(g_hDll, "GamePlugCreate");
    if (!fn) { std::cout << "GetProcAddress GamePlugCreate failed" << std::endl; return false; }
    HRESULT hr = fn(&g_plug);
    if (FAILED(hr)) { std::cout << "GamePlugCreate failed: 0x" << std::hex << hr << std::endl; return false; }
    return true;
}
int main() {
    if (!LoadPlug()) { system("pause"); return 1; }
    // ---------- 调用插件本命令方法如下 ----------
    try {
        _bstr_t username = L"U12-M7GBPL94GLUA9B7G";  // 换成你从官网获取的授权码
        VARIANT_BOOL v = g_plug->SetUsername(username);
        std::cout << "是否设置成功: " << (v ? 1 : 0) << std::endl;
    } catch (_com_error& e) {
        std::wcout << L"COM error: " << e.ErrorMessage() << std::endl;
    }
    g_plug->Release();
    system("pause");
    return 0;
}
返回值

返回 VARIANT_BOOL(True=设置成功,False=失败,例如授权码为空或超长)。本方法只是把授权码记录到当前进程,并不联网校验它的有效性;真正的有效性校验在调用收费功能时进行。

常见注意事项
  • 本分类全部为免费功能,调用它们本身不需要先授权;但 SetUsername 设置的授权码用来解锁其它收费功能。
  • 授权码从官网 https://www.game-plug.cn/ 获取;同一授权码通常绑定机器或有效期,请按官网说明使用。
  • SetUsername 只需在进程启动后调用一次,之后整段脚本都可以使用收费功能;重复调用会覆盖上一次设置的授权码。
  • 必须在调用任何收费功能之前调用;调用顺序错了收费功能会返回失败。
  • 本方法不联网校验授权码,只负责记录;只有真正调用收费功能时才会用授权码去校验,所以这里返回 True 不代表授权码一定有效。
  • username 是普通字符串,直接传形如 U12-M7GBPL94GLUA9B7G 的授权码即可,不要加多余空格或引号。