精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美成ee人免费视频| 亚洲午夜精品网| 欧美一区二粉嫩精品国产一线天| 51调教丨国产调教视频| 中文字幕影音在线| av电影一区二区| 国产福利视频一区| 久久久久久久久久网站| 日韩欧美中文字幕电影| 欧美日韩免费视频| 成人免费观看在线| 二区三区在线| 国产乱子轮精品视频| 久久久久久网站| 国产在线综合视频| www.亚洲一二| 欧美三级乱人伦电影| 日韩精品视频在线观看视频 | yourporn在线观看视频| 国产精品中文字幕一区二区三区| 欧美中文字幕视频| 免费视频一二三区| 日韩av密桃| 亚洲电影av在线| 午夜剧场高清版免费观看| free性欧美| 18欧美亚洲精品| 欧美二区三区在线| 三级小视频在线观看| 老司机精品视频在线| 51色欧美片视频在线观看| 伊人久久久久久久久久久久久久| 羞羞答答一区二区| 亚洲第一精品夜夜躁人人爽| 久久精品一卡二卡| 另类一区二区三区| 91福利国产精品| 免费无码国产v片在线观看| а√天堂8资源在线官网| 中文字幕欧美激情一区| 欧美日韩一区二区三区免费| 高清乱码毛片入口| 国产精品伊人色| 成人高清视频观看www| 中文字幕av第一页| 老牛影视一区二区三区| 欧美性资源免费| 久久久久久久极品| 中文高清一区| 9.1国产丝袜在线观看| 国产无遮挡免费视频| 欧美freesex交免费视频| 精品国产区一区二区三区在线观看 | 久久www免费人成精品| 精品毛片一区二区三区| 国产一区美女在线| 91中文在线视频| 国产三级伦理片| 国产精品一区二区三区99| 666精品在线| www.超碰在线.com| 高潮精品一区videoshd| 国产激情美女久久久久久吹潮| 国产91视频在线| 国产白丝网站精品污在线入口| 亚洲自拍偷拍区| 精品人妻一区二区三区麻豆91 | 欧美日韩卡一卡二| 在线观看日本一区二区| 中文成人在线| 日韩欧美二区三区| www.17c.com喷水少妇| 日韩美女国产精品| 国产一区二区三区18| 亚洲精品国产精品乱码在线观看| 久久在线免费| 久久69精品久久久久久久电影好| 国产亚洲欧美精品久久久久久| 精品96久久久久久中文字幕无| 国内精品小视频在线观看| 色婷婷av国产精品| 毛片av一区二区| 亚洲综合一区二区不卡| 秋霞欧美在线观看| 国产欧美日韩在线| 路边理发店露脸熟妇泻火| 欧美14一18处毛片| 日韩欧美综合在线视频| 亚洲36d大奶网| 一区二区三区视频免费视频观看网站| 亚洲国产日韩欧美在线99| 国产综合精品在线| 欧美xxx在线观看| 538国产精品一区二区在线 | 在线成人av观看| 欧美日本一区二区在线观看| 深夜视频在线观看| 欧洲三级视频| 欧美激情精品久久久久久大尺度| 国内精品福利视频| 国产一区二区女| 欧美人与物videos另类| av免费在线免费观看| 天天av天天翘天天综合网 | 成人国产精品视频| 亚洲韩国在线| 麻豆国产在线| 欧美一区午夜视频在线观看| 亚洲一级中文字幕| 欧美日韩精选| 国产精品一区二区在线| 亚洲三区在线播放| 亚洲免费伊人电影| 国产福利影院在线观看| 欧美黄色影院| 欧美日韩电影在线观看| 91激情在线观看| 久久午夜国产精品| av网站手机在线观看| 玖玖精品在线| 一区二区三区动漫| 羞羞影院体验区| 粉嫩一区二区三区性色av| 亚洲一区二区三区欧美| 国产精品一区二区av影院萌芽| 日韩欧美自拍偷拍| 成人性视频免费看| 久久一二三四| 久久精品日产第一区二区三区| 手机av免费在线| 538在线一区二区精品国产| 在线国产视频一区| 亚洲一区二区三区高清| 国产精品成人观看视频免费| 欧美69xxxx| 欧美日韩一级大片网址| 久久久久久国产免费a片| 久久精品亚洲一区二区| 美女一区视频| 黄在线观看免费网站ktv| 欧美成人精品福利| 久久黄色小视频| 国产成人免费视| 伊人网在线免费| 激情久久免费视频| 欧美成人免费在线观看| 99热这里只有精品1| 日韩一区有码在线| 午夜视频在线观| 91精品动漫在线观看| 91精品久久久久久久久久| 国产三级电影在线| 欧美日韩在线播放三区| 日韩精品电影一区二区三区| 水野朝阳av一区二区三区| 蜜桃传媒视频麻豆一区| 麻豆免费版在线观看| 日韩电视剧免费观看网站| 日本在线小视频| 95精品视频在线| 精品国产免费av| 偷拍亚洲精品| 国产精品久久久久久久7电影| 国产高清一区在线观看| 欧美色精品在线视频| 国精产品一区一区| 九色综合国产一区二区三区| 中文字幕中文字幕99| 免费观看亚洲视频大全| 欧美激情精品久久久久久大尺度| 欧美熟妇另类久久久久久不卡| 亚洲国产一二三| 好吊色视频一区二区三区| 99精品国产在热久久| 久久久久久久久久久久久久一区 | 欧美日韩亚洲一区二区| 亚洲国产av一区| 久草中文综合在线| 999一区二区三区| 色愁久久久久久| 日韩免费黄色av| 一区二区高清不卡| 日韩一级黄色片| 日本道在线观看| 国产精品毛片大码女人| 图片区偷拍区小说区| 国产日韩欧美三区| 亚洲v国产v在线观看| 日韩精品一区二区三区中文在线| 97超级碰在线看视频免费在线看 | 一区二区三区国产| 99久久人妻无码精品系列| 狠狠久久亚洲欧美| 五十路熟女丰满大屁股| 欧美freesextv| 精品国产乱码久久久久| 欧美aaa级| 91av在线看| 3d玉蒲团在线观看| 亚洲人成在线观看| 成人午夜免费在线观看| 欧洲国产伦久久久久久久| 久久中文字幕无码| 国产精品久久久久久久久搜平片| 精品一区二区三区四区五区六区| 日韩激情av在线| 国产乱淫av片杨贵妃| 日韩精品一区二区三区免费观影 | 国产三级三级看三级| 亚洲国产免费看| 中文字幕精品一区日韩| 色老板在线视频一区二区| 成人在线视频网| 香蕉视频亚洲一级| 国产69精品久久久久9| 久做在线视频免费观看| 精品中文视频在线| 蜜桃久久一区二区三区| 欧美另类久久久品| 精品人妻一区二区三区潮喷在线 | 亚洲日本韩国在线| 亚洲精品伦理在线| 亚洲人成人77777线观看| 国产精品亚洲欧美在线播放| 亚洲激情av在线| 18精品爽国产三级网站| 91亚洲永久精品| 精品无码av一区二区三区不卡| 日韩不卡免费视频| 久久亚洲中文字幕无码| 在线观看视频免费一区二区三区| 亚洲精品中文综合第一页| 亚洲精品亚洲人成在线| 动漫3d精品一区二区三区| 国产精品一站二站| 国产精品爽黄69天堂a| 忘忧草在线影院两性视频| 久久久久久久久久av| av片在线观看网站| 欧美精品一区在线播放| 拍真实国产伦偷精品| 国产一区二区三区视频| 免费播放片a高清在线观看| 亚洲国产成人精品久久久国产成人一区| 不卡av中文字幕| 日韩欧美久久久| 超碰在线人人干| 91麻豆精品久久久久蜜臀| 国产精品久久久久精| 欧美日韩国产经典色站一区二区三区| 嫩草影院一区二区三区| 欧美性xxxxxx少妇| 亚洲天堂一二三| 欧美精品乱码久久久久久| 97人人爽人人爽人人爽| 91麻豆精品国产无毒不卡在线观看| 一卡二卡在线视频| 91精品欧美综合在线观看最新| 国产毛片一区二区三区va在线 | 无限资源日本好片| 麻豆91精品视频| 久久精品亚洲天堂| 国产麻豆精品视频| 不许穿内裤随时挨c调教h苏绵| 国产91在线观看| 国产成人无码一区二区在线观看| 久久先锋影音av| 国产wwwwxxxx| 亚洲在线观看免费| 国产剧情在线视频| 欧美日韩一本到| 99热这里只有精| 亚洲国产精品字幕| www.视频在线.com| 久久久久www| 僵尸再翻生在线观看| 国产精品91久久久| 国产美女亚洲精品7777| 国产精品二区在线观看| 亚洲宅男网av| 中文字幕一区二区三区四区五区六区| 欧美成人日本| 欧美成人免费高清视频| 久久aⅴ国产欧美74aaa| 国产精品成人99一区无码 | 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 国产精品久久久久久久龚玥菲 | 成年人免费观看的视频| 激情国产一区| 一区二区在线播放视频| 国产乱码一区二区三区| 五月开心播播网| 国产精品国产三级国产aⅴ原创| 国产在线拍揄自揄拍| 在线视频一区二区三| 成 人 黄 色 片 在线播放| 亚洲精品视频网上网址在线观看 | 亚洲国产视频直播| 在线观看免费视频a| 亚洲第一区第二区| 欧美成人性生活视频| 992tv在线成人免费观看| 色999久久久精品人人澡69| 韩国成人一区| 91精品一区国产高清在线gif| 亚洲熟女乱色一区二区三区| 九色综合狠狠综合久久| 亚洲国产无码精品| 亚洲自拍与偷拍| 91成人在线免费| 亚洲人高潮女人毛茸茸| 丁香花在线电影| 91精品久久久久久久久中文字幕| 香蕉视频一区二区三区| 99热这里只有精品免费| 老司机午夜精品99久久| 人妻少妇无码精品视频区| 亚洲成av人片www| 国产色综合视频| 色偷偷888欧美精品久久久| 正在播放日韩精品| 国产精品我不卡| 欧美日韩日本国产亚洲在线| 欧美三级理论片| 国产无人区一区二区三区| 国产情侣在线视频| 欧美精品一区在线观看| 国产三区在线观看| 国产美女直播视频一区| 精品日韩免费| 国产成人无码av在线播放dvd| av在线不卡电影| 久久久久久久福利| 欧美一区二区三区免费大片| 日本高清中文字幕在线| 国产精品444| 欧美精品尤物在线观看| 午夜精品久久久内射近拍高清| 成人av免费网站| 国产 欧美 日韩 在线| 亚洲高清在线观看| 麻豆免费在线| 久久久亚洲综合网站| 先锋亚洲精品| 色无极影院亚洲| 欧美综合亚洲图片综合区| 二区在线视频| 91精品久久久久久综合乱菊 | 男人添女荫道口喷水视频| 国产精品一品二品| 久久综合综合久久| 亚洲国产成人精品女人久久久 | 第一福利永久视频精品 | 成人爽a毛片| www.99热这里只有精品| 91色.com| 国产成人精品亚洲| 日韩三级影视基地| www.成人| 久久99中文字幕| 91蜜桃在线观看| 糖心vlog精品一区二区| 日韩在线精品视频| 日韩视频1区| 无码播放一区二区三区| 久久精品欧美一区二区三区麻豆| 波多野结衣视频网址| 日韩网站免费观看高清| 日韩精品中文字幕吗一区二区| 999一区二区三区| 久久香蕉国产线看观看99| 在线视频 91| 欧美国产日韩在线| 自拍自偷一区二区三区| 一区二区三区国产免费| 亚洲卡通动漫在线| 性xxxx视频| 国产日韩欧美在线播放| 亚洲特色特黄| a级在线免费观看| 91精品国产综合久久久久久久久久| 欧美黑人xx片| 日韩和欧美的一区二区| 国产麻豆视频精品| 成年人视频在线免费看| 日韩一区av在线| 日韩精品福利一区二区三区| 深夜黄色小视频| 亚洲一卡二卡三卡四卡| 国产二区视频在线观看| 91免费观看| 日本欧美一区二区三区| 青娱乐国产在线| 一本色道久久综合亚洲精品小说| 精品一区二区三区中文字幕 | 亚洲精品美女久久7777777| 国产成人免费在线视频| 日批视频免费观看| 国内伊人久久久久久网站视频 | 精品国产一区二区三区四区在线观看|