WEB开发网
开发学院软件开发C语言 C#简单游戏外挂制作(以Warcraft Ⅲ为例) 阅读

C#简单游戏外挂制作(以Warcraft Ⅲ为例)

 2009-07-03 07:07:28 来源:WEB开发网   
核心提示: 一、声明Windows API 中的函数和常量//键盘Hook结构函数[StructLayout(LayoutKind.Sequential)]publicclassKeyBoardHookStruct{publicintvkCode;publicintscanCode;publicint

一、声明Windows API 中的函数和常量

   //键盘Hook结构函数
    [StructLayout(LayoutKind.Sequential)]
    public class KeyBoardHookStruct
    {
      public int vkCode;
      public int scanCode;
      public int flags;
      public int time;
      public int dwExtraInfo;
    }
    #region DllImport
    //设置钩子
    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    //抽掉钩子
    public static extern bool UnhookWindowsHookEx(int idHook);
    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    //调用下一个钩子
    public static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);
    //取得模块句柄 
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    private static extern IntPtr GetModuleHandle(string lpModuleName);

    //寻找目标进程窗口

    [DllImport("USER32.DLL")]
    public static extern IntPtr FindWindow(string lpClassName,
      string lpWindowName);
     //设置进程窗口到最前 

    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    //模拟键盘事件 

    [DllImport("User32.dll")]
    public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwExtraInfo);

//释放按键的常量
  private const int KEYEVENTF_KEYUP =2;

    本例所使用的函数比较少,它们都在系统的USER32.dll里,包括:设置和取消钩子、调用下一个钩子、导入进程、模拟键盘等等。我们依次导入它们。

    这些函数的命名规范合理,几乎只根据函数名就能知道其功能。

    如果读者对于其中的某些函数不熟悉,请自行搜索MSDN。

上一页  1 2 3 4  下一页

Tags:简单 游戏外挂 制作

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接