C++ 走免注册路线:LoadLibraryW + GamePlugCreate 拿到接口指针,不用写注册表、不需要管理员权限。
// 免注册调用:把 x64Game-Plug.dll 放到 exe 同目录,无需 regsvr32
// 1) 新建 x64 控制台工程 2) 关闭预编译头 3) 编码 UTF-8 带 BOM
#include <iostream>
#include <windows.h>
#include <comdef.h>
#import "x64Game-Plug.dll" no_namespace rename("FindWindow", "FindWindowGP")
static HMODULE g_hDll = NULL;
static IGamePlugPtr g_plug;
static bool LoadPlug() {
g_hDll = ::LoadLibraryW(L"x64Game-Plug.dll");
if (!g_hDll) return false;
typedef HRESULT (__stdcall* FnCreate)(void**);
FnCreate fn = (FnCreate)::GetProcAddress(g_hDll, "GamePlugCreate");
if (!fn) return false;
void* p = NULL;
if (FAILED(fn(&p)) || !p) return false;
g_plug = IGamePlugPtr((IGamePlug*)p, false);
return true;
}
int main() {
if (!LoadPlug()) { std::cout << "load failed\n"; std::cin.get(); return 1; }
// g_plug->SetUsername(_bstr_t(L"U12-XXXX")); // 收费命令先授权
hyper hwnd = g_plug->FindWindowGP(L"", L"记事本");
LONG pid = g_plug->GetWindowProcessId(hwnd);
std::cout << "pid = " << pid << std::endl;
g_plug.Release(); ::FreeLibrary(g_hDll);
std::cin.get();
return 0;
}