厚積薄發(fā)赢底,豐富的公用類庫積累失都,助你高效進行系統(tǒng)開發(fā)(7)-----聲音播放柏蘑、硬件信息幸冻、鍵盤模擬及鉤子、鼠標模擬及鉤子等設備相關

俗話說咳焚,一個好漢十個幫洽损,眾人拾柴火焰高等都說明一個道理,有更多的資源革半,更豐富的積累碑定,都是助你走向成功,走向頂峰的推動力又官。
本篇繼續(xù)繼續(xù)整理優(yōu)化已有的共用類庫延刘,并繼續(xù)發(fā)表隨筆介紹公用類庫的接口方法以及詳細使用操作,力求給自己繼續(xù)優(yōu)化六敬,積攢更豐富的公用類庫資源碘赖,加深了解的同時,也給大家展現(xiàn)公用類庫好的方面。
本篇的公用類庫的介紹主題是設備相關的部分普泡,包括計算機硬件信息(如系統(tǒng)信息播掷、電腦CPU、磁盤撼班、網(wǎng)卡歧匈、內(nèi)存等)、聲音播放控制砰嘁、 鍵盤屬性及操作件炉、全局鍵盤按鍵鉤子、鼠標屬性及操作般码、鼠標按鍵鉤子等類庫信息妻率。
1、****WAV聲音格式文件播放輔助類AudioHelper

**實現(xiàn)效果 **
1)本輔助類主要是用來方便實現(xiàn)播放WAV聲音格式文件的操作板祝。
2)聲音播放可以用在特定事件的觸發(fā)上宫静,如來電、收到消息等券时,經(jīng)典的就如QQ收到信息孤里,咳嗽的聲音,使用聲音播放可以提高更好的用戶體驗橘洞。

實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

 /// <summary>    
/// 播放 .wav 格式的聲音文件    
/// </summary>    
/// <param name="location">聲音文件路徑 </param>    
public static void Play(string location)    
   
/// <summary>    
/// 播放 .wav 格式的聲音文件    
/// </summary>    
/// <param name="playMode">播放聲音的枚舉模式捌袜。默認為AudioPlayMode.Background。</param>    
/// <param name="location">聲音文件路徑</param>    
public static void Play(string location, AudioPlayMode playMode)    
   
/// <summary>    
/// 播放 .wav 格式的聲音文件    
/// </summary>    
/// <param name="stream"><see cref="T:System.IO.Stream"></see>聲音文件的流對象</param>    
/// <param name="playMode">播放聲音的枚舉模式炸枣。默認為AudioPlayMode.Background虏等。</param>    
public static void Play(Stream stream, AudioPlayMode playMode)    
   
/// <summary>    
/// 播放 .wav 格式的聲音文件    
/// </summary>    
/// <param name="data">聲音文件的字節(jié)數(shù)組</param>    
/// <param name="playMode">播放聲音的枚舉模式。默認為AudioPlayMode.Background适肠。</param>    
public static void Play(byte[] data, AudioPlayMode playMode)    
   
/// <summary>    
/// 播放系統(tǒng)聲音    
/// </summary>    
public static void PlaySystemSound(SystemSound systemSound)    
   
/// <summary>    
/// 停止正在后臺播放的聲音    
/// </summary>    
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格式聲音文件。

**實現(xiàn)效果 **
1)本輔助類主要是用來方便實現(xiàn)MP3文件逛揩、WAV文件柠傍、Midi文件等聲音的播放操作,并提供音量控制操作功能辩稽。
實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

/// <summary>    
/// 播放聲音文件    
/// </summary>    
/// <param name="soundFileName">聲音文件路徑(可以是MP3惧笛、WAV、Midi等聲音文件)</param>    
/// <param name="Repeat">是否重復播放</param>    
public static void Play(string soundFileName,bool Repeat)    
   
/// <summary>    
/// 播放聲音嵌入資源字節(jié)數(shù)組    
/// </summary>    
/// <param name="soundEmbeddedResource">聲音文件嵌入資源字節(jié)數(shù)組(可以是MP3逞泄、WAV患整、Midi等聲音格式)</param>    
/// <param name="Repeat">是否重復播放</param>    
public static void Play(byte[] soundEmbeddedResource, bool Repeat)    
   
/// <summary>    
/// 暫停播放    
/// </summary>    
public static void Pause()    
   
/// <summary>    
/// 停止播放    
/// </summary>    
public static void Stop()    
   
/// <summary>    
/// 清除操作    
/// </summary>    
public static void Dispose()    
   
/// <summary>    
/// 獲取或設置音量的百分比    
/// </summary>    
/// <returns></returns>    
public static float VolumePercent    
   
   
/// <summary>    
/// 獲取音量    
/// </summary>    
/// <returns></returns>    
public static float GetVolume()    
   
/// <summary>    
/// 設置音量    
/// </summary>    
/// <param name="volume"></param>    
public static void SetVolume(float volume)    
   
/// <SUMMARY>    
/// 返回當前狀態(tài)播放:播放静檬,暫停,停止等    
/// </SUMMARY>    
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

**實現(xiàn)效果 **
1)本輔助類主要是用來方便實現(xiàn)獲取用戶硬件的相關信息拂檩,根據(jù)用戶各種硬件(CPU、網(wǎng)卡嘲碧、磁盤稻励、主板等)標識信息,獲取一個8位唯一標識數(shù)字愈涩。
2)本輔助類只提供了一個公共的方法Value望抽,它集合了CPU、網(wǎng)卡履婉、磁盤煤篙、主板等信息,通過這個8位的數(shù)字標識毁腿,我們可以唯一區(qū)分一臺電腦辑奈,類似我們每個人的指紋信息一樣,很少會發(fā)生重復的現(xiàn)象已烤,可以用在一些關鍵的注冊授權(quán)機制上鸠窗。

實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

/// <summary>    
/// 根據(jù)用戶各種硬件(CPU、網(wǎng)卡胯究、磁盤稍计、主板等)標識信息,    
/// 獲取一個8位唯一標識數(shù)字    
/// </summary>    
public static string Value()    
   
/// <summary>    
/// 獲取硬件的標識信息    
/// </summary>    
private static string identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)    
   
/// <summary>    
/// 獲取硬件的標識信息    
/// </summary>    
private static string identifier(string wmiClass, string wmiProperty)    
   
/// <summary>    
/// 獲取CPU信息    
/// </summary>    
private static string cpuId()    
   
/// <summary>    
/// 獲取BOIS主板標識信息    
/// </summary>    
private static string biosId()    
   
/// <summary>    
/// 獲取主硬盤的標識信息    
/// </summary>    
/// <returns></returns>    
private static string diskId()    
   
/// <summary>    
/// 獲取主板的標識信息    
/// </summary>    
/// <returns></returns>    
private static string baseId()    
   
/// <summary>    
/// 獲取主視頻控制器標識信息    
/// </summary>    
/// <returns></returns>    
private static string videoId()    
   
/// <summary>    
/// 獲取第一個可用網(wǎng)卡信息    
/// </summary>    
/// <returns></returns>    
private static string macId()    
   
/// <summary>    
/// 轉(zhuǎn)換內(nèi)容為8位數(shù)字    
/// </summary>    
private static string pack(string text)

2)輔助類FingerprintHelper的使用例子代碼如下所示

string identity = FingerprintHelper.Value();   
MessageUtil.ShowTips(identity);  

4裕循、獲取系統(tǒng)信息臣嚣、電腦CPU、磁盤剥哑、網(wǎng)卡硅则、內(nèi)存等相關信息輔助類 HardwareInfoHelper

**實現(xiàn)效果 **
1)本輔助類主要是用來方便獲取系統(tǒng)信息、電腦CPU星持、磁盤抢埋、網(wǎng)卡弹灭、內(nèi)存等相關信息督暂。


實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

 /// <summary>   
/// 獲得盤符為drvID的硬盤序列號,缺省為C    
/// </summary>    
/// <param name="drvID">盤符穷吮,如"C"</param>    
/// <returns></returns>    
public static string HDVal(string drvID)    
   
/// <summary>    
/// 獲取默認C盤的磁盤序列號    
/// </summary>    
/// <returns></returns>    
public static string HDVal()    
   
/// <summary>    
/// 獲取硬盤ID    
/// </summary>    
/// <returns></returns>    
public static string GetDiskID()    
   
/// <summary>    
/// 獲取硬盤Model的信息    
/// </summary>    
public static string GetDiskModel()    
   
/// <summary>    
/// 獲得Cpu使用率    
/// </summary>    
public static int GetCpuUsage()    
   
/// <summary>    
/// 獲取CPU的ID    
/// </summary>    
/// <returns></returns>    
public static string GetCPUId()    
   
/// <summary>    
/// 獲取CPU的名稱    
/// </summary>    
/// <returns></returns>    
public static string GetCPUName()    
   
/// <summary>    
/// 返回USB盤符列表    
/// </summary>    
public static List<string> GetUSBDriveLetters()    
   
/// <summary>    
/// 獲得硬盤信息    
/// </summary>    
public static HardDiskInfo GetHDInfo(byte driveIndex)   
  
  
#region 其他數(shù)據(jù)    
   
/// <summary>    
/// 獲取MAC地址    
/// </summary>    
/// <returns></returns>    
public static string GetMacAddress()    
   
/// <summary>    
/// 獲取IP地址    
/// </summary>    
public static string GetIPAddress()    
   
/// <summary>    
/// 獲取操作系統(tǒng)的登錄用戶名    
/// </summary>    
public static string GetUserName()    
   
/// <summary>    
/// 獲取計算機名    
/// </summary>    
public static string GetComputerName()    
   
/// <summary>    
/// 獲取PC類型    
/// </summary>    
public static string GetSystemType()    
   
/// <summary>    
/// 獲取物理內(nèi)存    
/// </summary>    
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,提供屬性訪問敲擊那個鍵捡鱼,以及發(fā)送軟鍵盤消息等操作八回。

**實現(xiàn)效果 **
1)本輔助類主要是用來方便實現(xiàn)訪問鍵盤的大寫鍵、數(shù)字鍵等鍵的開啟情況,另外判斷CTRL缠诅、Shift溶浴、Alt鍵是否按下的操作,輔助類也封裝了發(fā)送軟鍵盤消息等操作管引。
實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

#region 鍵盤屬性    
   
/// <summary>    
/// 判斷ALT建是否按下    
/// </summary>    
public static bool AltKeyDown    


/// <summary>    
/// 判斷Caps Lock大寫鍵是否打開    
/// </summary>    
public static bool CapsLock    

/// <summary>    
/// 判斷CTRL鍵是否按下    
/// </summary>    
public static bool CtrlKeyDown    

/// <summary>    
/// 判斷Num Lock 數(shù)字鍵是否打開    
/// </summary>    
public static bool NumLock    

/// <summary>    
/// 判斷Scroll Lock滾動鎖定鍵是否打開    
/// </summary>    
public static bool ScrollLock    

/// <summary>    
/// 判斷Shift鍵是否按下    
/// </summary>    
public static bool ShiftKeyDown   


#endregion   

#region 操作方法    

/// <summary>    
/// 發(fā)送一個或多個擊鍵到活動窗口士败。    
/// </summary>    
/// <param name="keys">定義發(fā)送鍵的字符串。特殊控制鍵代碼SHIFT(+),CTRL(^), ALT(%)褥伴。Send("{SPACE}")谅将、Send("+{TAB}")</param>    
public static void SendKeys(string keys)    

/// <summary>    
/// 發(fā)送一個或多個擊鍵到活動窗口    
/// </summary>    
/// <param name="keys">定義發(fā)送鍵的字符串.特殊控制鍵代碼SHIFT(+),CTRL(^), ALT(%)。Send("{SPACE}")重慢、Send("+{TAB}")</param>    
/// <param name="wait">指定是否要等待應用程序繼續(xù)之前得到處理的擊鍵饥臂。默認為True。    
/// </param>    
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}"); //發(fā)送Tab鍵    
KeyboardHelper.SendKeys("%{F4}"); //發(fā)送Alt + F4退出 

相關的按鍵參考如下所示


6似踱、全局鍵盤鉤子隅熙,用來捕捉系統(tǒng)全局的鍵盤輸入輔助類 KeyboardHook

實現(xiàn)效果 **
1)本輔助類主要是用來方便實現(xiàn)全局鍵盤鉤子,用來捕捉系統(tǒng)全局的鍵盤輸入核芽。
2)通過鍵盤鉤子猛们,我們可以獲取用戶的各種按鍵信息,以及可以屏蔽指定按鍵的操作狞洋,全局鍵盤鉤子弯淘,就如一扇門一樣,可以記錄相關的鍵盤輸入操作吉懊,也可以增加指定的事件處理庐橙,可以控制鍵盤按鍵繼續(xù)流轉(zhuǎn)到其他程序中,或者屏蔽操作借嗽。最典型的鉤子操作例子就是金山詞霸等取詞軟件态鳖。
3)輔助類通過KeyboardHook.Enable()開始鍵盤鉤子,通過KeyboardHook.Disable()禁用或者通過KeyboardHook.Remove(
)來移除指定的鍵盤鉤子事件恶导。

實現(xiàn)代碼

1)輔助類提供的方法接口如下所示:

/// <summary> 
/// 判斷是否CTRL鍵按下    
/// </summary>    
public static bool Control = false;    
   
/// <summary>    
/// 判斷Shift鍵是否按下    
/// </summary>    
public static bool Shift = false;    
   
/// <summary>    
/// 檢查Alt鍵是否按下    
/// </summary>    
public static bool Alt = false;    
   
/// <summary>    
/// 檢查Windows鍵是否按下    
/// </summary>    
public static bool Win = false;    
   
/// <summary>    
/// 鍵盤敲擊事件代理定義    
/// </summary>    
public delegate bool KeyPressed();    
   
/// <summary>    
/// 處理鍵盤按下委托函數(shù)    
/// </summary>    
/// <param name="key">    
/// 按下的鍵浆竭。需檢查CTRL、Shift惨寿、Win等鍵邦泄。    
/// <returns>    
/// 如果想應用程序能捕捉到,設置為True裂垦;如果設置為False顺囊,則鍵盤事件被屏蔽。    
/// </returns>    
public delegate bool KeyboardHookHandler(Keys key);    
   
/// <summary>    
/// 添加一個鍵盤鉤子處理給當前的鍵    
/// </summary>    
public static KeyboardHookHandler KeyDown;    
   
/// <summary>    
/// 啟動鍵盤鉤子處理    
/// </summary>    
/// <returns>如無異常返回True</returns>    
public static bool Enable()    
   
/// <summary>    
/// 禁用鍵盤鉤子處理    
/// </summary>    
/// <returns>如果禁用成功蕉拢,則返回True</returns>    
public static bool Disable()    
   
/// <summary>    
/// 添加一個按下鍵的鉤子處理    
/// </summary>    
/// <param name="key">按下的鍵</param>    
/// <param name="callback">按鍵的處理事件函數(shù)</param>    
public static bool AddKeyDown(Keys key, KeyPressed callback)    
   
/// <summary>    
/// 添加一個鍵彈起的鉤子處理    
/// </summary>    
/// <param name="key">彈起的鍵</param>    
/// <param name="callback">按鍵的處理事件函數(shù)</param>    
public static bool AddKeyUp(Keys key, KeyPressed callback)    
   
/// <summary>    
/// 添加一個按下鍵的鉤子處理    
/// </summary>    
/// <param name="key">按下的鍵</param>    
/// <param name="callback">按鍵的處理事件函數(shù)</param>    
public static bool Add(Keys key, KeyPressed callback)    
   
/// <summary>    
/// 移除一個按下鍵的鉤子處理    
/// </summary>    
/// <param name="key">移除的按鍵</param>    
public static bool RemoveDown(Keys key)    
   
/// <summary>    
/// 移除一個彈起鍵的鉤子處理    
/// </summary>    
/// <param name="key">移除的按鍵</param>    
public static bool RemoveUp(Keys key)    
   
/// <summary>    
/// 移除一個鍵的鉤子處理    
/// </summary>    
/// <param name="key">移除的按鍵</param>    
public static bool Remove(Keys key)    
   
/// <summary>    
/// 返回一個給定的鍵基于當前的控制鍵的字符串表示形式特碳。    
/// </summary>    
/// <param name="key">當前的鍵</param>    
/// <returns></returns>    
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站宗、鼠標輔助操作類,提供獲取鼠標狀態(tài)以及模擬鼠標點擊等操作 MouseHelper

**實現(xiàn)效果 **
1)本輔助類主要是用來方便獲取鼠標狀態(tài)以及模擬鼠標點擊等操作,通過該輔助類益愈,可以獲取鼠標是否安裝份乒、滾輪是否支持、或者模擬鼠標移動腕唧、單擊或辖、雙擊等操作。

實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

#region 鼠標相關屬性    
   
/// <summary>    
/// 檢查鼠標是否已經(jīng)安裝.    
/// </summary>    
public static bool MousePresent    
   
/// <summary>    
/// 檢查鼠標是否存在滾輪    
/// </summary>    
public static bool WheelExists    
   
/// <summary>    
/// 獲取鼠標滾輪每次滾動的行數(shù)    
/// </summary>    
public static int WheelScrollLines   
  
#endregion   
  
#region 鼠標操作函數(shù)    
   
/// <summary>    
/// 連續(xù)兩次鼠標單擊之間會被處理成雙擊事件的間隔時間枣接。    
/// </summary>    
/// <returns>以毫秒表示的雙擊時間</returns>    
[DllImport("user32.dll", EntryPoint = "GetDoubleClickTime")]    
public static extern int GetDoubleClickTime();    
   
/// <summary>    
/// 檢取光標的位置颂暇,以屏幕坐標表示。    
/// </summary>    
/// <param name="lpPoint">POINT結(jié)構(gòu)指針但惶,該結(jié)構(gòu)接收光標的屏幕坐標耳鸯。</param>    
/// <returns>如果成功,返回值非零膀曾;如果失敗县爬,返回值為零。</returns>    
[DllImport("user32.dll", EntryPoint = "GetCursorPos")]    
public static extern int GetCursorPos(Point lpPoint);    
   
/// <summary>    
/// 把光標移到屏幕的指定位置添谊。如果新位置不在由 ClipCursor函數(shù)設置的屏幕矩形區(qū)域之內(nèi)财喳,則系統(tǒng)自動調(diào)整坐標,使得光標在矩形之內(nèi)斩狱。    
/// </summary>    
/// <param name="x">指定光標的新的X坐標耳高,以屏幕坐標表示。</param>    
/// <param name="y">指定光標的新的Y坐標所踊,以屏幕坐標表示泌枪。</param>    
/// <returns>如果成功,返回非零值秕岛;如果失敗碌燕,返回值是零</returns>    
[DllImport("user32.dll")]    
public static extern int SetCursorPos(int x, int y);   
  
#endregion   
  
#region 封裝函數(shù)    
   
/// <summary>    
/// 在當前鼠標的位置左鍵點擊一下    
/// </summary>    
public static void MouseClick()    
   
/// <summary>    
/// 移動到坐標位置點擊    
/// </summary>    
/// <param name="location">要點擊的坐標位置,屏幕絕對值</param>    
public static void MouseClick(Point location)    
   
/// <summary>    
/// 移動到坐標位置點擊    
/// </summary>    
/// <param name="location">要點擊的坐標位置,屏幕絕對值</param>    
public static void MouseRightClick(Point location)    
   
/// <summary>    
/// 移動到坐標位置    
/// </summary>    
public static void MouseMove(Point location)   
  
#endregion 

2)輔助類MouseHelper的使用例子代碼如下所示
操作比較簡單,自己操作下即可继薛。

8修壕、全局的鼠標鉤子操作類,用作捕捉全局的鼠標輸入操作的輔助類 MouseHook

**實現(xiàn)效果 **
1)本輔助類主要是用來方便實現(xiàn)全局的鼠標鉤子惋增,用作捕捉全局的鼠標輸入操作叠殷。

實現(xiàn)代碼
1)輔助類提供的方法接口如下所示:

/// <summary>    
/// 鼠標輸入處理代理    
/// </summary>    
/// <param name="button">操作的鼠標鍵</param>    
/// <returns>如果想應用程序能捕捉到改鲫,設置為True诈皿;如果設置為False林束,則鼠標事件被屏蔽。</returns>    
public delegate bool MouseButtonHandler(MouseButtons button);    
   
/// <summary>    
/// 鼠標按鍵按下處理操作    
/// </summary>    
public static MouseButtonHandler ButtonDown;    
   
/// <summary>    
/// 鼠標按鍵彈起處理操作    
/// </summary>    
public static MouseButtonHandler ButtonUp;    
   
/// <summary>    
/// 鼠標移動處理操作    
/// </summary>    
public static MouseMoveHandler Moved;    
   
/// <summary>    
/// 鼠標滾動處理操作    
/// </summary>    
public static MouseScrollHandler Scrolled;    
   
/// <summary>    
/// 啟動鼠標鉤子處理    
/// </summary>    
/// <returns>如無異常則返回True</returns>    
public static bool Enable()    
   
/// <summary>    
/// 禁用鼠標鉤子操作    
/// </summary>    
/// <returns>禁用成功則返回True</returns>    
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;    
}  

整理文檔本身也對類庫進行進一步的優(yōu)化稽亏,整理過程本身也是一次馬拉松式的身心賽跑壶冒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市截歉,隨后出現(xiàn)的幾起案子胖腾,更是在濱河造成了極大的恐慌,老刑警劉巖瘪松,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咸作,死亡現(xiàn)場離奇詭異,居然都是意外死亡宵睦,警方通過查閱死者的電腦和手機记罚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壳嚎,“玉大人桐智,你說我怎么就攤上這事⊙滔冢” “怎么了说庭?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長郑趁。 經(jīng)常有香客問我刊驴,道長,這世上最難降的妖魔是什么寡润? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任缺脉,我火速辦了婚禮,結(jié)果婚禮上悦穿,老公的妹妹穿的比我還像新娘攻礼。我一直安慰自己,他們只是感情好栗柒,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布礁扮。 她就那樣靜靜地躺著,像睡著了一般瞬沦。 火紅的嫁衣襯著肌膚如雪太伊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天逛钻,我揣著相機與錄音僚焦,去河邊找鬼。 笑死曙痘,一個胖子當著我的面吹牛芳悲,可吹牛的內(nèi)容都是我干的立肘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼名扛,長吁一口氣:“原來是場噩夢啊……” “哼谅年!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肮韧,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤融蹂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后弄企,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體超燃,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年拘领,在試婚紗的時候發(fā)現(xiàn)自己被綠了淋纲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡院究,死狀恐怖洽瞬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情业汰,我是刑警寧澤伙窃,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站样漆,受9級特大地震影響为障,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜放祟,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一鳍怨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跪妥,春花似錦鞋喇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至纽疟,卻和暖如春罐韩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背污朽。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工散吵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓矾睦,卻偏偏與公主長得像晦款,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子顷锰,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容