您当前的位置: 首页 > 

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(7)

发布时间:2011-11-14 09:20:25 ,浏览量:0

 

俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。

本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公用类库的接口方法以及详细使用操作,力求给自己继续优化,积攒更丰富的公用类库资源,加深了解的同时,也给大家展现公用类库好的方面。

本篇的公用类库的介绍主题是设备相关的部分,包括计算机硬件信息(如系统信息、电脑CPU、磁盘、网卡、内存等)、声音播放控制、 键盘属性及操作、全局键盘按键钩子、鼠标属性及操作、鼠标按键钩子等类库信息。如果你对前面的类库介绍文章有兴趣,可以参考下面的连接了解。

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(6)

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(5)

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(4) 
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(3)  
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(1) 
  

1、WAV声音格式文件播放辅助类AudioHelper

实现效果 

 1)本辅助类主要是用来方便实现播放WAV声音格式文件的操作。

 2)声音播放可以用在特定事件的触发上,如来电、收到消息等,经典的就如QQ收到信息,咳嗽的声音,使用声音播放可以提高更好的用户体验。

实现代码 

1)辅助类提供的方法接口如下所示:

 ///     

///  播放 .wav 格式的声音文件     ///        ///   声音文件路径       public  static  void Play( string location)         ///        ///  播放 .wav 格式的声音文件     ///        ///   播放声音的枚举模式。默认为AudioPlayMode.Background。      ///   声音文件路径      public  static  void Play( string location, AudioPlayMode playMode)         ///        ///  播放 .wav 格式的声音文件     ///        ///   声音文件的流对象      ///   播放声音的枚举模式。默认为AudioPlayMode.Background。      public  static  void Play(Stream stream, AudioPlayMode playMode)         ///        ///  播放 .wav 格式的声音文件     ///        ///   声音文件的字节数组      ///   播放声音的枚举模式。默认为AudioPlayMode.Background。      public  static  void Play( byte[] data, AudioPlayMode playMode)         ///        ///  播放系统声音     ///        public  static  void PlaySystemSound(SystemSound systemSound)         ///        ///  停止正在后台播放的声音     ///        public  static  void Stop()  

2) 辅助类AudioHelper的使用例子代码如下所示

private  void btnPlaySound_Click( object sender, EventArgs e)     {          try        {             AppConfig config =  new AppConfig();              string SoundFilePath = config.AppConfigGet( " SoundFilePath ");             AudioHelper.Play(SoundFilePath); // AudioHelper.Play("ringin.wav");         }          catch (Exception ex)         {             LogHelper.Error( " 没找到声音文件 " , ex);         }     }  

2、声音文件播放操作辅助类SoundPlayerHelper。除了MP3声音文件外,还可以播放WAV格式、midi格式声音文件。

实现效果 

 1)本辅助类主要是用来方便实现MP3文件、WAV文件、Midi文件等声音的播放操作,并提供音量控制操作功能。

实现代码 

1)辅助类提供的方法接口如下所示:

 ///     

///  播放声音文件     ///        ///   声音文件路径(可以是MP3、WAV、Midi等声音文件)      ///   是否重复播放      public  static  void Play( string soundFileName, bool Repeat)         ///        ///  播放声音嵌入资源字节数组     ///        ///   声音文件嵌入资源字节数组(可以是MP3、WAV、Midi等声音格式)      ///   是否重复播放      public  static  void Play( byte[] soundEmbeddedResource,  bool Repeat)         ///        ///  暂停播放     ///        public  static  void Pause()         ///        ///  停止播放     ///        public  static  void Stop()         ///        ///  清除操作     ///        public  static  void Dispose()         ///        ///  获取或设置音量的百分比     ///        ///        public  static  float VolumePercent             ///        ///  获取音量     ///        ///        public  static  float GetVolume()         ///        ///  设置音量     ///        ///        public  static  void SetVolume( float volume)         ///        ///  返回当前状态播放:播放,暂停,停止等     ///        public  static  string Status  

2)辅助类SoundPlayerHelper的使用例子代码如下所示 

bool isPlay =  false;     private  void btnPlayMp3_Click( object sender, EventArgs e)     {          if (!isPlay)         {              string mp3File = Path.Combine(Application.StartupPath,  " 伤不起.mp3 ");              string waveFile = Path.Combine(Application.StartupPath,  " ringin.wav ");              string midFile =  @" C:\Windows\Media\onestop.mid ";                 SoundPlayerHelper.Play(mp3File,  false);     // 播放MP3格式文件              // SoundPlayerHelper.Play(waveFile, true);  // 播放WAV格式文件              // SoundPlayerHelper.Play(midFile, false);   // 播放Midi格式文件              this.btnPlayMp3.Text =  " 停止播放 ";         }          else        {             SoundPlayerHelper.Stop(); // 停止播放              // SoundPlayerHelper.Pause(); // 暂停播放              this.btnPlayMp3.Text =  " 播放声音 ";         }              string statu = SoundPlayerHelper.Status;          this.Text = statu;         isPlay = !isPlay;     }         private  void trackBar1_Scroll( object sender, EventArgs e)     {          // 设置音量          float vol = SoundPlayerHelper.VolumePercent;         SoundPlayerHelper.VolumePercent = trackBar1.Value;    }    

3、提供用户硬件唯一信息的辅助类 FingerprintHelper

实现效果 

 1)本辅助类主要是用来方便实现获取用户硬件的相关信息,根据用户各种硬件(CPU、网卡、磁盘、主板等)标识信息,获取一个8位唯一标识数字。 

 2)本辅助类只提供了一个公共的方法Value,它集合了CPU、网卡、磁盘、主板等信息,通过这个8位的数字标识,我们可以唯一区分一台电脑,类似我们每个人的指纹信息一样,很少会发生重复的现象,可以用在一些关键的注册授权机制上。

实现代码 

1)辅助类提供的方法接口如下所示:

///        ///  根据用户各种硬件(CPU、网卡、磁盘、主板等)标识信息,     ///  获取一个8位唯一标识数字     ///        public  static  string Value()         ///        ///  获取硬件的标识信息     ///        private  static  string identifier( string wmiClass,  string wmiProperty,  string wmiMustBeTrue)         ///        ///  获取硬件的标识信息     ///        private  static  string identifier( string wmiClass,  string wmiProperty)         ///        ///  获取CPU信息     ///        private  static  string cpuId()         ///        ///  获取BOIS主板标识信息     ///        private  static  string biosId()         ///        ///  获取主硬盘的标识信息     ///        ///        private  static  string diskId()         ///        ///  获取主板的标识信息     ///        ///        private  static  string baseId()         ///        ///  获取主视频控制器标识信息     ///        ///        private  static  string videoId()         ///        ///  获取第一个可用网卡信息     ///        ///        private  static  string macId()         ///        ///  转换内容为8位数字     ///        private  static  string pack( string text)

 
2)
辅助类
FingerprintHelper的使用例子代码如下所示 
 string identity = FingerprintHelper.Value();    MessageUtil.ShowTips(identity);  

4、获取系统信息、电脑CPU、磁盘、网卡、内存等相关信息辅助类 HardwareInfoHelper

实现效果 

 1)本辅助类主要是用来方便获取系统信息、电脑CPU、磁盘、网卡、内存等相关信息。

 

实现代码  

1)辅助类提供的方法接口如下所示:

 ///     

///  获得盘符为drvID的硬盘序列号,缺省为C     ///        ///   盘符,如"C"      ///        public  static  string HDVal( string drvID)         ///        ///  获取默认C盘的磁盘序列号     ///        ///        public  static  string HDVal()         ///        ///  获取硬盘ID     ///        ///        public  static  string GetDiskID()         ///        ///  获取硬盘Model的信息     ///        public  static  string GetDiskModel()         ///        ///  获得Cpu使用率     ///        public  static  int GetCpuUsage()         ///        ///  获取CPU的ID     ///        ///        public  static  string GetCPUId()         ///        ///  获取CPU的名称     ///        ///        public  static  string GetCPUName()         ///        ///  返回USB盘符列表     ///        public  static List< string> GetUSBDriveLetters()         ///        ///  获得硬盘信息     ///        public  static HardDiskInfo GetHDInfo( byte driveIndex)          #region 其他数据         ///        ///  获取MAC地址     ///        ///        public  static  string GetMacAddress()         ///        ///  获取IP地址     ///        public  static  string GetIPAddress()         ///        ///  获取操作系统的登录用户名     ///        public  static  string GetUserName()         ///        ///  获取计算机名     ///        public  static  string GetComputerName()         ///        ///  获取PC类型     ///        public  static  string GetSystemType()         ///        ///  获取物理内存     ///        public  static  string GetTotalPhysicalMemory()       #endregion 

2)辅助类HardwareInfoHelper的使用例子代码如下所示  

private  void btnComputer_Click( object sender, EventArgs e)     {          string computerName = HardwareInfoHelper.GetComputerName();          string userName = HardwareInfoHelper.GetUserName();          string systemType = HardwareInfoHelper.GetSystemType();          string cpuid = HardwareInfoHelper.GetCPUId();          string cpuName = HardwareInfoHelper.GetCPUName();          int cpuUsage = HardwareInfoHelper.GetCpuUsage();          string diskId = HardwareInfoHelper.GetDiskID();          string ip = HardwareInfoHelper.GetIPAddress();          string macAddress = HardwareInfoHelper.GetMacAddress();          string memery = HardwareInfoHelper.GetTotalPhysicalMemory();             StringBuilder sb =  new StringBuilder();         sb.AppendFormat( " ComputerName:\t {0} \r\n ", computerName);         sb.AppendFormat( " UserName:\t {0} \r\n ", userName);         sb.AppendFormat( " SystemType:\t {0} \r\n ", systemType);         sb.AppendFormat( " CPU ID:\t {0} \r\n ", cpuid);         sb.AppendFormat( " CPU Name:\t {0} \r\n ", cpuName);         sb.AppendFormat( " CPU Usage:\t {0} \r\n ", cpuUsage);         sb.AppendFormat( " Disk Id:\t {0} \r\n ", diskId);         sb.AppendFormat( " IP:\t {0} \r\n ", ip);         sb.AppendFormat( " MacAddress:\t {0} \r\n ", macAddress);         sb.AppendFormat( " TotalPhysicalMemory:\t {0} \r\n ", memery);         MessageUtil.ShowTips(sb.ToString());              string identity = FingerprintHelper.Value();         MessageUtil.ShowTips(identity);    

}   

5、键盘操作辅助类KeyboardHelper,提供属性访问敲击那个键,以及发送软键盘消息等操作。

实现效果 

 1)本辅助类主要是用来方便实现访问键盘的大写键、数字键等键的开启情况,另外判断CTRL、Shift、Alt键是否按下的操作,辅助类也封装了发送软键盘消息等操作。

实现代码 

1)辅助类提供的方法接口如下所示:

#region 键盘属性                 ///                ///  判断ALT建是否按下             ///                public  static  bool AltKeyDown                     ///                ///  判断Caps Lock大写键是否打开             ///                public  static  bool CapsLock                 ///                ///  判断CTRL键是否按下             ///                public  static  bool CtrlKeyDown                 ///                ///  判断Num Lock 数字键是否打开             ///                public  static  bool NumLock                 ///                ///  判断Scroll Lock滚动锁定键是否打开             ///                public  static  bool ScrollLock                 ///                ///  判断Shift键是否按下             ///                public  static  bool ShiftKeyDown                  #endregion               #region 操作方法                 ///                ///  发送一个或多个击键到活动窗口。             ///                ///   定义发送键的字符串。特殊控制键代码SHIFT(+),CTRL(^), ALT(%)。Send("{SPACE}")、Send("+{TAB}")              public  static  void SendKeys( string keys)                 ///                ///  发送一个或多个击键到活动窗口             ///                ///   定义发送键的字符串.特殊控制键代码SHIFT(+),CTRL(^), ALT(%)。Send("{SPACE}")、Send("+{TAB}")              ///   指定是否要等待应用程序继续之前得到处理的击键。默认为True。             ///                public  static  void SendKeys( string keys,  bool wait)               #endregion  

2)辅助类

KeyboardHelper的使用例子代码如下所示  
bool capsLock = KeyboardHelper.CapsLock;     bool numLock = KeyboardHelper.NumLock;     bool scrollLock = KeyboardHelper.ScrollLock;     KeyboardHelper.SendKeys( " {TAB} ");  // 发送Tab键     KeyboardHelper.SendKeys("%{F4}"); //发送Alt + F4退出 
相关的按键参考如下所示

 

6、全局键盘钩子,用来捕捉系统全局的键盘输入辅助类 KeyboardHook

实现效果 

 1)本辅助类主要是用来方便实现全局键盘钩子,用来捕捉系统全局的键盘输入。 

 2)通过键盘钩子,我们可以获取用户的各种按键信息,以及可以屏蔽指定按键的操作,全局键盘钩子,就如一扇门一样,可以记录相关的键盘输入操作,也可以增加指定的事件处理,可以控制键盘按键继续流转到其他程序中,或者屏蔽操作。最典型的钩子操作例子就是金山词霸等取词软件。 

 3)辅助类通过KeyboardHook.Enable()开始键盘钩子,通过KeyboardHook.Disable()禁用或者通过KeyboardHook.Remove(**)来移除指定的键盘钩子事件。 

实现代码 

1)辅助类提供的方法接口如下所示:

 ///     

///  判断是否CTRL键按下     ///        public  static  bool Control =  false;         ///        ///  判断Shift键是否按下     ///        public  static  bool Shift =  false;         ///        ///  检查Alt键是否按下     ///        public  static  bool Alt =  false;         ///        ///  检查Windows键是否按下     ///        public  static  bool Win =  false;         ///        ///  键盘敲击事件代理定义     ///        public  delegate  bool KeyPressed();         ///        ///  处理键盘按下委托函数     ///        ///        ///  按下的键。需检查CTRL、Shift、Win等键。     ///        ///  如果想应用程序能捕捉到,设置为True;如果设置为False,则键盘事件被屏蔽。     ///        public  delegate  bool KeyboardHookHandler(Keys key);         ///        ///  添加一个键盘钩子处理给当前的键     ///        public  static KeyboardHookHandler KeyDown;         ///        ///  启动键盘钩子处理     ///        ///   如无异常返回True      public  static  bool Enable()         ///        ///  禁用键盘钩子处理     ///        ///   如果禁用成功,则返回True      public  static  bool Disable()         ///        ///  添加一个按下键的钩子处理     ///        ///   按下的键      ///   按键的处理事件函数      public  static  bool AddKeyDown(Keys key, KeyPressed callback)         ///        ///  添加一个键弹起的钩子处理     ///        ///   弹起的键      ///   按键的处理事件函数      public  static  bool AddKeyUp(Keys key, KeyPressed callback)         ///        ///  添加一个按下键的钩子处理     ///        ///   按下的键      ///   按键的处理事件函数      public  static  bool Add(Keys key, KeyPressed callback)         ///        ///  移除一个按下键的钩子处理     ///        ///   移除的按键      public  static  bool RemoveDown(Keys key)         ///        ///  移除一个弹起键的钩子处理     ///        ///   移除的按键      public  static  bool RemoveUp(Keys key)         ///        ///  移除一个键的钩子处理     ///        ///   移除的按键      public  static  bool Remove(Keys key)         ///        ///  返回一个给定的键基于当前的控制键的字符串表示形式。     ///        ///   当前的键      ///        public  static  string KeyToString(Keys key)  
 
2)
辅助类
KeyboardHook的使用例子代码如下所示 
private  void btnKeyboadHook_Click( object sender, EventArgs e)     {         KeyboardHook.Enable();         KeyboardHook.Add(Keys.S,  new KeyboardHook.KeyPressed(TestKeyboadHook));     }         private  bool TestKeyboadHook()     {          // 仅处理Alt + S 的钩子事件          if (KeyboardHook.Alt)         {              this.Text = DateTime.Now.ToString();             NativeMethods.BringToFront( this.Handle);         }          return  true;  // 如果要被其他程序捕捉,返回True,否则返回False。     }         private  void btnRemoveKeyboadHook_Click( object sender, EventArgs e)     {         KeyboardHook.Remove(Keys.S);     }  

7、鼠标辅助操作类,提供获取鼠标状态以及模拟鼠标点击等操作 MouseHelper

实现效果 

 1)本辅助类主要是用来方便获取鼠标状态以及模拟鼠标点击等操作,通过该辅助类,可以获取鼠标是否安装、滚轮是否支持、或者模拟鼠标移动、单击、双击等操作。

实现代码 

1)辅助类提供的方法接口如下所示:

 #region 鼠标相关属性    

    ///        ///  检查鼠标是否已经安装.     ///        public  static  bool MousePresent         ///        ///  检查鼠标是否存在滚轮     ///        public  static  bool WheelExists         ///        ///  获取鼠标滚轮每次滚动的行数     ///        public  static  int WheelScrollLines       #endregion       #region 鼠标操作函数         ///        ///  连续两次鼠标单击之间会被处理成双击事件的间隔时间。     ///        ///   以毫秒表示的双击时间      [DllImport( " user32.dll ", EntryPoint =  " GetDoubleClickTime ")]     public  static  extern  int GetDoubleClickTime();         ///        ///  检取光标的位置,以屏幕坐标表示。     ///        ///   POINT结构指针,该结构接收光标的屏幕坐标。      ///   如果成功,返回值非零;如果失败,返回值为零。      [DllImport( " user32.dll ", EntryPoint =  " GetCursorPos ")]     public  static  extern  int GetCursorPos(Point lpPoint);         ///        ///  把光标移到屏幕的指定位置。如果新位置不在由 ClipCursor函数设置的屏幕矩形区域之内,则系统自动调整坐标,使得光标在矩形之内。     ///        ///   指定光标的新的X坐标,以屏幕坐标表示。      ///   指定光标的新的Y坐标,以屏幕坐标表示。      ///   如果成功,返回非零值;如果失败,返回值是零      [DllImport( " user32.dll ")]     public  static  extern  int SetCursorPos( int x,  int y);       #endregion       #region 封装函数         ///        ///  在当前鼠标的位置左键点击一下     ///        public  static  void MouseClick()         ///        ///  移动到坐标位置点击     ///        ///   要点击的坐标位置,屏幕绝对值      public  static  void MouseClick(Point location)         ///        ///  移动到坐标位置点击     ///        ///   要点击的坐标位置,屏幕绝对值      public  static  void MouseRightClick(Point location)         ///        ///  移动到坐标位置     ///        public  static  void MouseMove(Point location)       #endregion 

2)
辅助类
MouseHelper的使用例子代码如下所示 

 操作比较简单,自己操作下即可。

8、全局的鼠标钩子操作类,用作捕捉全局的鼠标输入操作的辅助类 MouseHook

实现效果 

 1)本辅助类主要是用来方便实现全局的鼠标钩子,用作捕捉全局的鼠标输入操作。 

实现代码 

1)辅助类提供的方法接口如下所示:

///        ///  鼠标输入处理代理     ///        ///   操作的鼠标键      ///   如果想应用程序能捕捉到,设置为True;如果设置为False,则鼠标事件被屏蔽。      public  delegate  bool MouseButtonHandler(MouseButtons button);         ///        ///  鼠标按键按下处理操作     ///        public  static MouseButtonHandler ButtonDown;         ///        ///  鼠标按键弹起处理操作     ///        public  static MouseButtonHandler ButtonUp;         ///        ///  鼠标移动处理操作     ///        public  static MouseMoveHandler Moved;         ///        ///  鼠标滚动处理操作     ///        public  static MouseScrollHandler Scrolled;         ///        ///  启动鼠标钩子处理     ///        ///   如无异常则返回True      public  static  bool Enable()         ///        ///  禁用鼠标钩子操作     ///        ///   禁用成功则返回True      public static bool Disable()   

2)辅助类

MouseHook的使用例子代码如下所示  

private  void btnMouseHook_Click( object sender, EventArgs e)     {         MouseHook.ButtonDown =  new MouseHook.MouseButtonHandler(TestMouseHook);         MouseHook.Scrolled =  new MouseHook.MouseScrollHandler(TestMouseScroll);         MouseHook.Enable();     }         private  bool TestMouseHook(MouseButtons sender)     {          this.Text =  string.Format( " 你单击了鼠标键:{0} ", sender);          return  true;     }         private  bool TestMouseScroll( int delta)     {          this.Text =  string.Format( " 你滚动了鼠标值:{0} ", delta);          return  true;    

}    

整理文档本身也对类库进行进一步的优化,整理过程本身也是一次马拉松式的身心赛跑。

主要研究技术:代码生成工具、Visio二次开发、送水管理软件等共享软件开发        转载请注明出处: 撰写人:伍华聪  http: //www.iqidi.com      
 
关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    106161博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0601s