⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dihandler.cs

📁 这是网上下载的很好的串口发短信的程序! 是用VC++来做的
💻 CS
字号:
using System;
using System.Windows.Forms;
using Microsoft.DirectX.DirectInput;

namespace DDGameHelper
{
	/// <summary>
	/// DirectInput 设备管理者,负责用户输入的相关处理
	/// </summary>
	public class DIHandler
	{
		#region 受保护的成员
		/// <summary>
		/// DirectInput Device
		/// </summary>
		protected Device _keyboard = null;
		protected Form _ownerForm;
		#endregion

		#region 构造函数
		/// <summary>
		/// 构造函数。须传入一个 form 控件用于 device bind
		/// </summary>
		public DIHandler(Form ownerForm)
		{
			_ownerForm=ownerForm;
		}
		#endregion

		public bool Init(ref string errmsg)
		{
			_keyboard=new Device(SystemGuid.Keyboard);

			_keyboard.SetDataFormat(DeviceDataFormat.Keyboard);

			_keyboard.SetCooperativeLevel(_ownerForm, CooperativeLevelFlags.Foreground | 
				CooperativeLevelFlags.NonExclusive | CooperativeLevelFlags.NoWindowsKey);
			//try....
			_keyboard.Acquire();
			//catch   errmsg=.... return false

			return true;
		}

		#region 输入设备状态访问相关调用
		/// <summary>
		/// 获取键盘状态。用 ks[Key.xxxx] 这种格式来检查某个键是否被按下
		/// </summary>
		public KeyboardState GetKeyboardState()
		{
			KeyboardState kbstate = null;
			try 
			{
				kbstate = this._keyboard.GetCurrentKeyboardState();
			}
			catch (InputException)
			{
				while(true)		//死循环获取键盘状态直到获取成功。因为有时候,键盘状态无法获取成功(MS示例也是这样干的)
				{
					Application.DoEvents();
					try
					{ 
						_keyboard.Acquire(); 
					}
					catch (InputLostException)
					{ 
						continue; 
					}
					catch(OtherApplicationHasPriorityException)
					{ 
						continue; 
					}
					break;
				}
			}
			return kbstate;
		}
		#endregion
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -