本节课中,我们需要学习利用SetWindowsHook来注入主线程,然后利用多线程的原理来解决资源冲突的问题。
1.注入的原因:不同的线程在访问同一个共享数据的时候,如果没有同步处理,就会造成错误,从而导致程序崩溃,所以我们可以给自己编写的多线程,并且加上一些同步出来,然后再将dll注入到游戏的主线程中,就可以解决资源冲突的问题。
我们要用到的函数是SetWindowsHook(),具体介绍看MSDN
HHOOK SetWindowsHookEx( int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId );
具体代码如下:
#pragma once
#ifndef HookMainthread
#define HookMainthread
#include<Windows.h>
#include"BaseGameData.h"
class Threaddata :public BaseData{
public:
Threaddata();
~Threaddata();
};
extern Threaddata *pdata;
extern DWORD BaseGameMainhwd;
#define MSG_USEGOODS 1
HWND GetGamewndHandle();//获取游戏句柄
DWORD HookMainThread(); //挂载钩子
DWORD UnHookMainThrea