我的DLL挂钩与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.h http://pastebin.com/dc5t5H8s
我有一个问题(LONG_PTR)myHookProc 我的编译器认为错误C2440:初始化:不能转换从'长'到'WNDPROC' 我没有任何想法我现在可以做什么。如果没有(LONG_PTR)我的编译器说,他无法从 'LRESULT' 转换为 'LONG'
你应该明确地转换SetWindowLongPtr的返回值:'originalProc =(WNDPROC)SetWindowLongPtr(getToplevelWindows()[1],GWLP_WNDPROC,(LONG_PTR)myHookProc);'。另外,如果你想在以后访问originalProc,你不应该在'case DLL_PROCESS_ATTACH'的上下文中创建另一个变量...... –