精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一個簡單C#游戲程序制作

開發 后端
本文介紹了網上有很多C#游戲程序制作的教程,大多是講針對大型網絡游戲的,主要包含一些抓包、反匯編、C++的知識綜合。事實也如此,常見的外掛都是使用VC++寫的,從來沒有過C#或者其他.NET語言編寫的程序。

在向大家詳細介紹C#游戲程序制作之前,首先讓大家了解下作為游戲程序來說,主要就是三個功能:模擬鍵盤操作、模擬鼠標操作、修改內存數據,然后全面介紹C#游戲程序制作。

網上有很多C#游戲程序制作的教程,大多是講針對大型網絡游戲的,主要包含一些抓包、反匯編、C++的知識綜合。事實也如此,常見的外掛都是使用VC++寫的,從來沒有過C#或者其他.NET語言編寫的程序。

作為微軟.NET技術的忠實粉絲,這難免是一種遺憾。不過不要緊,下面流牛木馬就教大家兩招,包教包會,免收學費。 :)

其實作為游戲程序來說,主要就是三個功能:模擬鍵盤操作、模擬鼠標操作、修改內存數據。修改內存數據比較難,但模擬鼠標鍵盤的操作卻很簡單。很多流行游戲的外掛,都可以只通過模擬鼠標鍵盤來實現,例如:勁舞團、QQ音速、連連看、各類網頁游戲,以及各類大型網游中的自動打怪、自動吃藥等等。

Warcraft Ⅲ,學名魔獸爭霸之冰封王座,俗稱魔獸,簡稱war3,在最近六七年風靡全球。最近兩年,war3在中國又掀起了玩DOTA的新高潮。

本文制作DOTA游戲中的顯血、改鍵外掛為例,簡單地介紹如何制作C#游戲程序。

本示例包含兩個功能:顯血;將Q鍵改為小鍵盤的7鍵。玩war3的同學都知道,這兩個功能對于war3(尤其是DOTA)相當重要。

首先簡單介紹一下,程序模擬鍵盤的原理。

程序與游戲程序是兩個不同的進程。外掛程序使用Windows提供的API找到游戲程序的進程,并設置鍵盤鉤子(什么叫做鉤子?你不知道,但百度知道。)設置完鉤子后,我們再監控游戲進程中用戶的按鍵,并根據用戶需求進行處理,完成某些模擬鍵盤動作。

了解了這個過程之后,我們就可以開始整理思路了。完成C#游戲程序一共需要以下四個步驟:

一、聲明Windows API 中的函數和常量

  1.      //鍵盤Hook結構函數  
  2.         [StructLayout(LayoutKind.Sequential)]  
  3.         public class KeyBoardHookStruct  
  4.         {  
  5.             public int vkCode;  
  6.             public int scanCode;  
  7.             public int flags;  
  8.             public int time;  
  9.             public int dwExtraInfo;  
  10.         }  
  11.         #region DllImport  
  12.         //設置鉤子  
  13.         [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]  
  14.         public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);  
  15.         [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]  
  16.         //抽掉鉤子  
  17.         public static extern bool UnhookWindowsHookEx(int idHook);  
  18.         [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]  
  19.         //調用下一個鉤子  
  20.         public static extern int CallNextHookEx(int idHook, int nCode, IntPtr wParam, IntPtr lParam);  
  21.         //取得模塊句柄   
  22.         [DllImport("kernel32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]  
  23.         private static extern IntPtr GetModuleHandle(string lpModuleName);  
  24.  
  25.         //尋找目標進程窗口  
  26.         [DllImport("USER32.DLL")]  
  27.         public static extern IntPtr FindWindow(string lpClassName,  
  28.             string lpWindowName);  
  29.          //設置進程窗口到最前   
  30. [DllImport("USER32.DLL")]  
  31.         public static extern bool SetForegroundWindow(IntPtr hWnd);  
  32.        //模擬鍵盤事件   
  33. [DllImport("User32.dll")]  
  34.         public static extern void keybd_event(Byte bVk, Byte bScan, Int32 dwFlags, Int32 dwExtraInfo);  
  35.  
  36. //釋放按鍵的常量  
  37.    private const int KEYEVENTF_KEYUP =2; 

本例所使用的函數比較少,它們都在系統的USER32.dll里,包括:設置和取消鉤子、調用下一個鉤子、導入進程、模擬鍵盤等等。我們依次導入它們。

這些函數的命名規范合理,幾乎只根據函數名就能知道其功能。

如果讀者對于其中的某些函數不熟悉,請自行搜索MSDN。

二、使用Windows API設置鉤子 

有了以上windows API函數的聲明,下一步就是設置鉤子了。

寥寥兩行代碼,但包含了相當豐富的內容。

  1. //委托  
  2. public delegate int HookProc(int nCode, IntPtr wParam, IntPtr lParam);  
  3.    
  4.  
  5. public void Hook_Start()  
  6.     {  
  7.         // 安裝鍵盤鉤子  
  8.         if (hHook == 0)  
  9.         {  
  10.             KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);  
  11.  
  12.             hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);  
  13.                        
  14.         }  
  15.     } 

先介紹一下設置鉤子的明星函數:SetWindowsHookEx 。它的參數說明如下。
◆SetWindowsHookEx(
◆idHook: Integer;   {鉤子類型}
◆lpfn: TFNHookProc; {函數指針}
◆hmod: HINST;       {包含鉤子函數的模塊(EXE、DLL)句柄; 一般是 HInstance; 如果是當前線程這里可以是 0}
◆dwThreadId: DWORD {關聯的線程; 可用 GetCurrentThreadId 獲取當前線程; 0 表示是系統級鉤子}
◆HHOOK;            {返回鉤子的句柄; 0 表示失敗}

請注意lpfn這個參數。上面的解釋是“函數指針”。在C#中,是不能直接使用指針的,更不要說函數指針了。我們可以采用C#中的委托(delegate)來實現函數指針的功能。

于是乎,在上面的代碼中,我們定義了一個處理鍵盤消息函數的委托KeyBoardHookProcedure = new HookProc(KeyBoardHookProc),并將它作為參數傳入SetWindowsHookEx 內。KeyBoardHookProc就是被委托的具體函數。

三、監控用戶操作

設置好鉤子后,我們可以在被委托的函數中寫入監控用戶操作與模擬鍵盤的代碼。

  1. public static int KeyBoardHookProc(int nCode, IntPtr wParam, IntPtr lParam)  
  2.         {  
  3.        //監控用戶鍵盤輸入  
  4. KeyBoardHookStruct input = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));  
  5.  
  6.             //截獲Home  鍵            
  7.             if (input.vkCode == (int)Keys.Home)  
  8.             {  
  9.               //此處寫入其他操作邏輯   
  10. }  
  11.          
  12.            // 繼續執行下一個鉤子程序  
  13.             return CallNextHookEx(hHook, nCode, wParam, lParam);  
  14.  
  15.         } 

四、根據用戶需要模擬鍵盤操作

顯血功能:玩war3的都知道,war3自帶的顯血快捷鍵有3個。Alt鍵是顯示所有單位生命,[ 鍵顯示友方單位生命,] 鍵顯示地方單位生命。外掛需要做的事情僅僅是模擬一直按著某個鍵不松手而已。由于Alt鍵與其他很多鍵構成組合鍵,故我們不能模擬長按Alt,否則會影響正常游戲。我們的解決方案應該是模擬長按 [ 鍵和 ] 鍵。代碼如下:

  1. //獲得魔獸程序的句柄  
  2.   IntPtr wcHandle = FindWindow(null"Warcraft III");  
  3.  
  4.   //如果鉤子有效  
  5.   if (wcHandle != IntPtr.Zero)  
  6.   {  
  7.       //設置游戲窗口到最前  
  8.       SetForegroundWindow(wcHandle);  
  9.   byte VK_NUM1 = 219;   //鍵盤上 [ 鍵的代碼。按[可顯示友方單位生命值。  
  10.     byte VK_NUM2 = 221;   // 鍵盤上] 鍵的代碼。按]可顯示敵方單位生命值。  
  11.     keybd_event(VK_NUM1, 0, 0, 0); //長按[  
  12.   keybd_event(VK_NUM2, 0, 0, 0);  //長按]  

改鍵:小鍵盤(Numpad)上的快捷鍵很不方便按,所以很多玩家喜歡把小鍵盤上的鍵改到左邊的字母鍵盤。玩war3的同學都知道,沒有任何英雄的技能使用"Q”這個快捷鍵。于是我們把小鍵盤上的7鍵改到Q上,也不會造成任何沖突。方法也很簡單:如果監控到用戶按"Q”鍵,則像游戲進程發送小鍵盤上的"7"鍵。代碼如下:

  1. //如果用戶按了Q鍵  
  2.    if (input.vkCode == (int)Keys.Q)  
  3.    {  
  4.        //獲得魔獸程序的句柄  
  5.        IntPtr wcHandle = FindWindow(null"Warcraft III");  
  6.  
  7.        //如果鉤子有效  
  8.        if (wcHandle != IntPtr.Zero)  
  9.        {  
  10.            //設置游戲窗口到最前  
  11.            SetForegroundWindow(wcHandle);  
  12.            byte VK_Q = (byte)Keys.NumPad7;  
  13.            keybd_event(VK_Q, 0, 0, 0);//按下小鍵盤7  
  14.            keybd_event(VK_Q, 0, KEYEVENTF_KEYUP, 0); //松開小鍵盤7  
  15.        }  
  16.        return 1;  
  17.    } 

好了,到這里就把模擬鍵盤的C#游戲程序介紹完了。模擬鼠標與之非常類似,請用戶自行揣摩。

【編輯推薦】

  1. 看看C# Hook 如何實現
  2. 學習C#虛函數實例演示
  3. 一個C#數據訪問XML的例子
  4. C#特性之通俗演義
  5. 探尋C# 3.5新特性
責任編輯:book05 來源: hi.baidu
相關推薦

2009-08-25 01:46:00

C# WINDOWS服

2021-01-14 08:55:20

C語言編程

2009-08-28 09:55:15

C#時間間隔

2009-07-31 17:14:19

C#語言Web程序

2009-09-11 09:10:30

C#編寫游戲

2009-09-01 16:14:06

C#窗口抖動

2021-01-05 12:38:53

C++編程語言軟件開發

2009-07-30 17:10:51

C#時間間隔

2009-08-14 00:55:21

C#程序編譯

2009-08-19 14:15:42

C# 復合控件

2011-06-16 15:36:56

Qt Quick Symbian

2021-01-01 19:30:21

Python編程語言

2021-02-05 16:03:48

JavaScript游戲學習前端

2009-10-14 09:58:43

VB.NET程序

2009-07-30 18:18:27

C#時間計算

2009-08-18 17:19:33

C#事件模型

2009-07-22 17:15:04

C#實現

2022-11-02 08:51:01

2023-12-07 07:26:04

2021-01-03 16:30:34

Rust編程語言
點贊
收藏

51CTO技術棧公眾號

亚洲国产天堂| www在线视频| 麻豆成人免费电影| 蜜臀久久99精品久久久久久宅男 | 一夜七次郎国产精品亚洲| www.99在线| 1区2区3区在线| 中文一区二区完整视频在线观看| 成人免费视频网站入口| 中文字幕手机在线视频| 一区二区三区四区电影| 亚洲视频综合网| 美女网站视频在线观看| 成人免费在线观看视频| 图片区小说区区亚洲影院| 在线看成人av电影| 久久99久久| 成人午夜精品一区二区三区| 成人a在线视频| 欧美日韩a v| 亚洲高清在线| 久久国产精品影片| 国产一二三四视频| 蜜桃一区二区| 亚洲精品videossex少妇| 91高清国产视频| 美女网站视频一区| 欧美性猛交xxxx久久久| 日本中文字幕在线视频观看| 老司机av在线免费看| 国产欧美一区视频| 国产一级二级三级精品| 成 人 黄 色 片 在线播放| 蜜桃av噜噜一区| 国产成人a亚洲精品| 黄网在线观看视频| 亚洲精品激情| 欧美极品在线播放| 九九九久久久久| 欧美国产高清| 美日韩精品视频免费看| 91九色丨porny丨极品女神| 欧洲乱码伦视频免费| 亚洲免费视频在线观看| 国产网站无遮挡| 开心激情综合| 亚洲精品视频二区| 女~淫辱の触手3d动漫| 国产精品片aa在线观看| 亚洲美女福利视频网站| 黑人巨大精品欧美| 国产乱码精品一区二区亚洲 | 麻豆国产精品一区| 欧美xxxx在线| 亚洲人线精品午夜| 国产美女永久免费无遮挡| 免费短视频成人日韩| 亚洲欧美一区二区三区久久| 亚洲欧洲久久久| 欧美一级淫片| 不卡伊人av在线播放| 免费一级全黄少妇性色生活片| 综合天堂av久久久久久久| 欧美人在线视频| 日韩黄色精品视频| 天堂影院一区二区| 国产精品日韩欧美| 国产av精国产传媒| 国产成a人亚洲精品| 精品欧美一区二区三区久久久| 亚洲欧美自偷自拍| 国产日韩欧美高清在线| 二级片在线观看| 98色花堂精品视频在线观看| 色一区在线观看| 日韩va在线观看| av成人男女| 国产亚洲欧美aaaa| 91高清免费看| 亚洲一区欧美激情| 国产日韩欧美在线播放| 人成网站在线观看| 国产欧美日韩视频一区二区| 在线观看免费黄色片| 91福利在线免费| 欧美日韩黄视频| 日本人添下边视频免费| 日本一区二区免费高清| 欧美大尺度激情区在线播放| 欧美一级视频免费观看| 奇米影视一区二区三区小说| 99精彩视频在线观看免费| 日本福利片在线| 日韩毛片视频在线看| 欧美视频第一区| 免费一级欧美片在线观看网站| 日韩成人在线视频观看| 美女三级黄色片| 国产精品呻吟| 91久久大香伊蕉在人线| 成人性生交大片免费看午夜| 亚洲一线二线三线视频| 精品亚洲一区二区三区四区| 大桥未久女教师av一区二区| 中文综合在线观看| 蜜臀精品一区二区三区| 丁香一区二区三区| 偷拍盗摄高潮叫床对白清晰| 女海盗2成人h版中文字幕| 欧美精品久久99久久在免费线| 国产一级二级在线观看| 欧美午夜不卡| 亚洲aa中文字幕| av在线天堂播放| 欧美性猛交xxxx乱大交极品| zjzjzjzjzj亚洲女人| 亚洲精品成人影院| 国产精品日韩在线播放| 免费在线超碰| 激情久久av一区av二区av三区| 欧美性受xxxx黒人xyx性爽| 精品高清久久| 国产999精品久久久| 日韩中文字幕综合| 一区二区三区欧美日韩| 一级黄色大片儿| 四季av一区二区凹凸精品| 国产精品99导航| 亚洲 欧美 精品| 亚洲18色成人| 精品人妻一区二区免费| 国产精品v日韩精品v欧美精品网站 | 国产精品99久久久久久似苏梦涵 | 亚洲性视频h| 91久久偷偷做嫩草影院| 国产区在线观看| 56国语精品自产拍在线观看| 国产欧美一区二区三区在线观看视频| 亚洲欧美视频| 久久久久久久久久久久久久久久av| 青草视频在线免费直播| 欧美一区二区三区日韩| 欧美黄色aaa| 国产精品99久久久久久久女警| 97超碰人人爱| 亚洲欧美日本国产| 欧美极品欧美精品欧美视频 | 久久精品久久久久| 国产又黄又粗又长| 亚洲摸摸操操av| 97免费公开视频| 雨宫琴音一区二区在线| 国产一区二区不卡视频| 国产蜜臀一区二区打屁股调教| 精品伦理精品一区| 国产美女激情视频| 久久久亚洲国产美女国产盗摄| 国产一区亚洲二区三区| 国产精品探花在线观看| 国产欧美 在线欧美| a在线免费观看| 日韩欧美另类在线| 日本少妇毛茸茸高潮| 91色视频在线| 国产v亚洲v天堂无码久久久| 日韩午夜电影网| 亚洲综合大片69999| 波多野结衣在线播放| 亚洲精品一区二区网址| 亚洲视频在线观看免费视频| 亚洲天堂a在线| 中文视频在线观看| 奇米精品一区二区三区在线观看一| 正在播放亚洲| 久久精品色播| 国产精品美乳一区二区免费| 成人免费高清| 日韩hd视频在线观看| 糖心vlog精品一区二区| 一区二区三区四区乱视频| 国内精品久久99人妻无码| 久久狠狠亚洲综合| 性欧美大战久久久久久久| 精品久久精品| 国产a一区二区| 国产极品一区| 久久久免费精品视频| 国产精品久久久久一区二区国产| 欧美精品粉嫩高潮一区二区| 国内免费精品视频| 亚洲婷婷综合久久一本伊一区 | 国产厕拍一区| 国产精品久久久久久五月尺| 日本电影在线观看| 中文字幕精品视频| 手机看片一区二区| 欧美久久免费观看| 黄色在线视频网址| 一区二区三区精品| 91社区视频在线观看| 成人网在线播放| 97超碰人人爽| 久久国产日韩| 黄色一级片黄色| 色无极亚洲影院| 国产嫩草一区二区三区在线观看| 亚洲综合av一区二区三区| 久久久久久久久久久人体 | ㊣最新国产の精品bt伙计久久| 精品夜夜澡人妻无码av| 国产福利91精品一区| 天天碰免费视频 | 欧美成人福利在线观看| 国产日产高清欧美一区二区三区| 老司机av福利| 日韩精品一区二区三区免费观影| 国产激情美女久久久久久吹潮| 欧美videos粗暴| 日韩美女视频中文字幕| 国产高清视频色在线www| 久久综合九色九九| 欧美成人三区| 在线看欧美日韩| 国产在线三区| 日韩精品极品视频| 无码h黄肉3d动漫在线观看| 欧美成人video| 国产三级小视频| 欧美精选一区二区| 91精品国产乱码久久| 在线看国产一区二区| 国产香蕉视频在线| 亚洲动漫第一页| 激情五月婷婷在线| 亚洲一区二区在线观看视频| 精品国产欧美日韩不卡在线观看| 中文字幕永久在线不卡| 欧美h片在线观看| 亚洲欧洲另类国产综合| 亚洲人与黑人屁股眼交| 中文幕一区二区三区久久蜜桃| 伊人网在线视频观看| 久久精品欧美日韩| 亚洲精品国产91| 亚洲国产精品黑人久久久| 老头老太做爰xxx视频| 欧美激情在线一区二区三区| 青娱乐国产视频| 国产精品久久久久婷婷二区次| 中文字幕在线观看二区| 日韩美女久久久| 免费视频一二三区| 偷拍亚洲欧洲综合| 欧美亚洲精品天堂| 91国偷自产一区二区三区成为亚洲经典| 久久中文字幕免费| 色嗨嗨av一区二区三区| 亚洲天堂网视频| 91麻豆精品91久久久久久清纯 | 天天操天天摸天天干| 欧美日韩亚洲一区二区三区| 日本高清不卡码| 欧美日韩一区高清| 成 人片 黄 色 大 片| 欧美精品一区视频| 国产在线视频资源| 久久视频国产精品免费视频在线| 视频在线这里都是精品| 欧美一级片久久久久久久| 免费高清视频在线一区| 亚洲一区二区三区四区在线播放| 中文字幕一区二区三区中文字幕| 精品久久蜜桃| 日韩精品水蜜桃| 国产a级片网站| 日韩有码一区二区三区| 国产九九九视频| 91视频xxxx| 草视频在线观看| 日韩欧美国产成人| 国产视频一区二区三| 日韩电影在线观看中文字幕| 天堂资源在线中文| 国模精品一区二区三区色天香| 搜成人激情视频| 不卡一卡2卡3卡4卡精品在| 国产剧情在线观看一区| 国产精品视频网站在线观看| 久久久久国产精品一区三寸| 三上悠亚 电影| 国产日产精品一区| 九九视频免费观看| 欧美三级一区二区| 色窝窝无码一区二区三区| 神马久久桃色视频| 黑人巨大精品| 波多野结衣一区二区三区在线观看| 国产调教一区二区三区| 可以看毛片的网址| 久久99精品国产.久久久久久| 国产麻豆xxxvideo实拍| 亚洲欧美日韩在线播放| av手机天堂网| 亚洲国产精品国自产拍av秋霞| 午夜免费视频在线国产| 日本久久久a级免费| 凹凸成人在线| 三年中国中文在线观看免费播放| 久久精品人人做人人爽电影蜜月| 久久精品aⅴ无码中文字字幕重口| 欧美国产精品劲爆| 激情视频网站在线观看| 欧美成人精品二区三区99精品| 日本在线视频站| 国产精品福利久久久| 欧美精品密入口播放| 久久精品无码中文字幕| 国产乱人伦偷精品视频免下载| 国产调教在线观看| 一本高清dvd不卡在线观看| 日本韩国免费观看| 欧美人交a欧美精品| 美女日韩一区| a级网站在线观看| 国产做a爰片久久毛片| 欧美色图17p| 欧美视频一区二区三区在线观看| 欧洲伦理片一区 二区 三区| 91精品国产91久久久久| 国产精品久av福利在线观看| 免费的av在线| 国产一区二区三区综合| 男人在线观看视频| 欧美美女黄视频| 欧美另类极品| 成人网中文字幕| 亚洲最新av| 免费看的av网站| 亚洲宅男天堂在线观看无病毒| 国产黄色片免费观看| 毛片精品免费在线观看| 国产亚洲久久| 51xx午夜影福利| 国产精品一区二区久久不卡| 欧美卡一卡二卡三| 日韩欧美视频在线| а√在线天堂官网| 精品日产一区2区三区黄免费| 宅男噜噜噜66一区二区| 三上悠亚ssⅰn939无码播放| 色哟哟日韩精品| 日本在线人成| 亚洲在线免费看| 伊人久久大香线蕉av超碰演员| 91传媒理伦片在线观看| 精品福利视频导航| 久草在线网址| 国产主播精品在线| 午夜国产精品视频| www.88av| 91国内精品野花午夜精品| av大全在线免费看| 亚洲永久免费观看| 亚洲精品一二| 国产精品美女高潮无套| 日韩一区二区在线观看视频播放| 黑人另类精品××××性爽| 欧美不卡1区2区3区| 喷水一区二区三区| 久久久精品91| 国产视频丨精品|在线观看| 欧美91在线|欧美| 国产一区二区视频播放| 久久久美女毛片| jizz中国女人| 国产999在线观看| 一区二区在线| 亚洲国产无码精品| 欧美一区二区三区喷汁尤物| 女人高潮被爽到呻吟在线观看| 亚洲国产一区二区精品视频 | 欧美黑人巨大xxxxx| 国产成人精品免费看在线播放| 91视频国产资源| 99国产精品久久久久久久成人| 97精品伊人久久久大香线蕉 | 日韩中文字幕在线| 久久a级毛片毛片免费观看| 欧美大尺度做爰床戏| 亚洲国产毛片aaaaa无费看| 大胆av不用播放器在线播放| 99在线观看| 免费在线一区观看| 国产成人亚洲精品自产在线| 色先锋资源久久综合5566| 卡一精品卡二卡三网站乱码| 国产乱码一区二区三区四区| 欧美丝袜美女中出在线| 在线看福利影| 在线精品日韩|