与 DLL 挂钩一个游戏钩子

Hooking with DLL a game hook

本文关键字:一个 游戏 DLL      更新时间:2023-10-16

My DLL

#include <windows.h>
#include <vector>
#include "Funkcje.h"
WNDPROC originalProc;
LRESULT CALLBACK myHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,
    DWORD fdwreason,
    LPVOID lpReversed)
{
    switch (fdwreason)
    {
    case DLL_PROCESS_ATTACH:
        WNDPROC originalProc = SetWindowLongPtr(getToplevelWindows()[1], GWLP_WNDPROC, (LONG_PTR)myHookProc);
        break;
    }
    return TRUE;
}
LRESULT CALLBACK myHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LRESULT originalResult = originalProc(hWnd, uMsg, wParam, lParam); // call original first
    if (uMsg == WM_PAINT)
    {
        PAINTSTRUCT ps;
        HDC hdc = GetDC(hWnd);
        TextOut(hdc, 150, 150, L"TEST", 4);
        ReleaseDC(hWnd, hdc);
    }
    return originalResult;
}

Funkcje.hhttp://pastebin.com/dc5t5H8s

我在使用 (LONG_PTR(myHookProc 时遇到问题我的编译器说错误 C2440:"正在初始化":无法从"LONG"转换为"WNDPROC"我不知道我现在能做什么。如果没有(LONG_PTR(,我的编译器说他无法从"LRESULT"转换为"LONG">

将签名更改为:

LRESULT APIENTRY myHookProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)

并呼吁:

WNDPROC originalProc = (WNDPROC)SetWindowLongPtr(getToplevelWindows()[1], GWLP_WNDPROC, (LONG_PTR)myHookProc);
相关文章: