程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#對游戲手柄的編程開發-API篇(3)(1)

C#對游戲手柄的編程開發-API篇(3)(1)

編輯:關於C語言

對游戲手柄的編程開發在上兩篇中,已講解完,在此篇中將講解對鍵盤的模擬。

對鍵盤的模擬,系統已提供了非常多的API函數,在這裡就不一一講解了,只講解其中一個最簡單的 API函數 。

/// <summary>
       /// 模擬鍵盤事件
       /// </summary>
       /// <param name="bVk">虛擬鍵值</param>
       /// <param name="bScan"></param>
       /// <param name="dwFlags"></param>
       /// <param name="dwExtraInfo">附加鍵狀</param>
       [DllImport("user32.dll")]
       public static extern void keybd_event(byte bVk, byte bScan, uint  dwFlags, uint dwExtraInfo);

其中bVk可直接與System.Windows.Forms.Keys的值對應;dwFlags可為以下值的組合:

常數 說明 KEYEVENTF_KEYDOWN KeyDown事件 KEYEVENTF_EXTENDEDKEY 表明bScan為擴展鍵碼。 KEYEVENTF_KEYUP KeyUp事件

為了方便對此API再進一步封裝:

/// <summary>
       /// 鍵盤事件
       /// </summary>
       [Flags]
       public enum KeyboardEvents
       {
       None = 0x0,
       KeyDown = 0x1,
       KeyUp = 0x2
       }
/// <summary>
       /// 發送鍵盤事件
       /// </summary>
       /// <param name="key"></param>
       /// <param name="events">事件</param>
       public static void SendKeyEvent(Keys key, KeyboardEvents events)
       {
       if ((events & KeyboardEvents.KeyDown) == KeyboardEvents.KeyDown)
       keybd_event((byte)key, 0, KEYEVENTF_KEYDOWN, 0);
       if ((events & KeyboardEvents.KeyUp) == KeyboardEvents.KeyUp)
       keybd_event((byte)key, 0, KEYEVENTF_KEYUP, 0);
       }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved