亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        用C#實(shí)現(xiàn)鼠標(biāo)左右鍵的切換

        字號(hào):

        在平時(shí)用電腦的過(guò)程中,我喜歡隔段時(shí)間就把鼠標(biāo)左右調(diào)換一下,一來(lái)是想讓自己一側(cè)的肩、手臂、手腕能得到休息,盡量避免因長(zhǎng)期固定姿勢(shì)使用鼠標(biāo)而帶來(lái)的身體不適,另一方面也因?yàn)槲冶緛?lái)就是個(gè)左撇子,喜歡嘗試給兩只手均等的做事機(jī)會(huì)。
            當(dāng)然,自從我給電腦同時(shí)接上左右兩只鼠標(biāo)以后,來(lái)回調(diào)換鼠標(biāo)是避免了(據(jù)我所知,有在電腦上接三四只鼠標(biāo)的,真是厲害!),但系統(tǒng)對(duì)于鼠標(biāo)左右鍵的安排卻不聽(tīng)我的調(diào)換,還要費(fèi)力地去控制面板中設(shè)置一番,非常麻煩。因此我想,何不寫(xiě)幾行代碼,讓鼠標(biāo)左右鍵能在最短的時(shí)間內(nèi)左右切換呢?這主意不錯(cuò)!OK,馬上到MSDN里查找一番,十幾分鐘寫(xiě)出了下面這個(gè)小程序。
            1. SwapMouseButton
            根據(jù)MSDN所述,可以通過(guò)調(diào)用SwapMouseButton這一API來(lái)實(shí)現(xiàn)鼠標(biāo)左右鍵功能互換,Windows控制面板中的相關(guān)設(shè)置也是通過(guò)調(diào)用該API來(lái)實(shí)現(xiàn)的。該API存在于user32.dll文件中,它的原型是:
            BOOL SwapMouseButton(
            BOOL fSwap
            );
            我們可以在.NET工程中通過(guò)P/Invoke輕松聲明對(duì)該API的調(diào)用。我寫(xiě)的調(diào)用聲明如下:
            // P/Invoke declarations
            [DllImport("user32.dll")]
            private extern static bool SwapMouseButton(bool fSwap);
            其中,fSwap是需要傳入的參數(shù),當(dāng)它的值為true時(shí),系統(tǒng)會(huì)把鼠標(biāo)左右鍵功能進(jìn)行互換(即換成左手鼠標(biāo));當(dāng)它的值為false時(shí),系統(tǒng)會(huì)把鼠標(biāo)左右鍵功能還原為默認(rèn)狀態(tài)(即右手鼠標(biāo))。因此,當(dāng)我想使用左手鼠標(biāo)時(shí),只需向SwapMouseButton方法傳入一個(gè)true變量即可實(shí)現(xiàn),非常方便。
            2. SystemParametersInfo
            除了調(diào)用SwapMouseButton來(lái)實(shí)現(xiàn)鼠標(biāo)左右值功能切換之外,Windows還提供了另外一個(gè)實(shí)現(xiàn)同樣效果的API:SystemParametersInfo。根據(jù)MSDN,該API的原型是:
            BOOL SystemParametersInfo(
            UINT uiAction,
            UINT uiParam,
            PVOID pvParam,
            UINT fWinIni
            );
            用C#可以進(jìn)行如下聲明:
            [DllImport("user32.dll")]
            private extern static int SystemParametersInfo(uint uiAction, uint
            uiParam, IntPtr pvParam, uint fWinIni);
            其中,uiAction指定一個(gè)需要獲取的系統(tǒng)參數(shù),如屏幕大小、分辨率、鼠標(biāo)配置等,如果傳入?yún)?shù)SPI_SETMOUSEBUTTONSWAP就可以用來(lái)設(shè)置鼠標(biāo)功能切換;當(dāng)向uiParam參數(shù)傳入正值時(shí),系統(tǒng)就會(huì)把鼠標(biāo)左右鍵功能進(jìn)行互換(即換成左手鼠標(biāo)),當(dāng)向uiParam傳入0時(shí),系統(tǒng)還會(huì)把鼠標(biāo)功能還原成默認(rèn)狀態(tài)(即還原為右手鼠標(biāo))。
            由此,我們需要在uiAction位置傳入SPI_SETMOUSEBUTTONSWAP。不過(guò)很明顯,SPI_SETMOUSEBUTTONSWAP只是C語(yǔ)言中#define編譯預(yù)定義指令所定義出的一個(gè)常量,我們必須在C#代碼中對(duì)它進(jìn)行重新定義。OK,打開(kāi)Winuser.h頭文件,在其中搜索SPI_SETMOUSEBUTTONSWAP,找到如下定義(位于8623行):
            #define SPI_SETMOUSEBUTTONSWAP 33
            可見(jiàn),SPI_SETMOUSEBUTTONSWAP定義的是整型值33,這樣我們就可以在C#中做出如下定義:
            private const uint SPI_SETMOUSEBUTTONSWAP = 33;