对就是tx的TP。
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include "Game.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
check(); //DLL空间加载时调用check检查窗口ID是否是我们的要注入的ID
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
UnHook();//退出时,调用UnHook()关闭HOOK
break;
}
return TRUE;
}
// Game.cpp : 定义 DLL 应用程序的导出函数。
//
include “stdafx.h”
include “Game.h”
include “stdio.h”
HHOOK m_hook = NULL;
LRESULT CALLBACK CBTProc( //SETwindowsHOOK的回调函数
int nCode,
WPARAM wParam,
LPARAM lParam
)
{
return CallNextHookEx(m_hook, nCode, wParam, lParam);
}
//DLL的导出函数
GAME_API void SetHook()
{
m_hook = SetWindowsHookEx(WH_CBT, CBTProc, GetModuleHandle(L"Game.dll"), 0);//全局HOOK最后参数为0
//MessageBox(0, L"注入成功", L"注入", 0);
}
GAME_API void UnHook(){
if (m_hook)
::UnhookWindowsHookEx(m_hook);
}
//检查要注入的ID是否是我们通过类名找到的ID
void check()
{
HWND hwnd = ::FindWindow(L”TWINCONTROL”, NULL