首先应当清楚一键呼出窗口的原理.其实重要技术就是使用键盘钩子函数.在wo们获取了游戏窗口的句柄后,可以把它保留在一个变量中,在后面wo们要用到这个变量和获取当前窗口函数所获取的窗口句柄对照,看看是否是同一个窗口,如果为同一个窗口,那么便弹出外挂程序窗口,反之不做任何处置.在C#中好像没提供这个函数,但wo们可以应用体系的API函数来到达这个后果,在实现前wo们应当自身定义一个API类库来储存一些体系API,这个类库里面可以包含钩子函数的定义级所需的各个事件.
这里wo们可以使用全局键盘钩子,因为在C#中使用线程钩子没有全局钩子这么便利.先新建一个类库取名为:Win32api:
public enum HookType : int //钩子类型枚举
{
WH_JOURNALRECORD = 0,
WH_JOURNALPLAYBACK = 1,
WH_KEYBOARD = 2,
WH_GETMESSAGE = 3,
WH_CALLWNDPROC = 4,
WH_CBT = 5,
WH_SYSMSGFILTER = 6,
WH_MOUSE = 7,
WH_HARDWARE = 8,
WH_DEBUG = 9,
WH_SHELL = 10,
WH_FOREGROUNDIDLE = 11,
WH_CALLWNDPROCRET = 12,
WH_KEYBOARD_LL = 13,
WH_MOUSE_LL = 14
}
[StructLayout(LayoutKind.Sequential)]
public class KeyboardHookStruct //键盘键值构造定义
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo; .
}
public const int WM_KEYDOWN = 0x100; //键的16进制数
public const int WM_KEYUP = 0x101;
&nbs
C#外挂编写-一键呼出窗口
最新推荐文章于 2024-06-26 17:06:06 发布