c#設置系統參數,鼠標速度,滾輪速度爲例

因項目需要在程序設置系統的鼠標速度及滾輪速度,在百度尋求解決方案,竟然沒有找到,開始以爲微軟沒有公開函數,後來沒有辦法,只能科學上網向谷歌尋求幫助,還真的找到了,而且資料還不少,還是外國牛人多~~~
直接貼代碼
static class MouseConfig
    {
        /// <summary>
        /// 鼠標速度
        /// </summary>
        public const UInt32 SPI_SETMOUSESPEED = 0x0071;
        /// <summary>
        /// 滾輪速度
        /// </summary>
        public const UInt32 SPI_SETWHEELSCROLLLINES = 0x0069;


        //最大值爲20,最小值爲1
        [DllImport("User32.dll")]
        static extern Boolean SystemParametersInfo(
            UInt32 uiAction,
            UInt32 uiParam,
            UInt32 pvParam,
            UInt32 fWinIni);

        /// <summary>
        /// 設置鼠標速度
        /// </summary>
        /// <param name="speed">鼠標速度,最大值20,最小值1</param>
        public static void SetMouseSpeed(uint speed)
        {
            uint mouseSpeed = speed;
            if (mouseSpeed < 1)
            {
                mouseSpeed = 1;
            }
            else if (mouseSpeed > 20)
            {
                mouseSpeed = 20;
            }
            SystemParametersInfo(SPI_SETMOUSESPEED, 0, mouseSpeed, 0);
        }

        /// <summary>
        /// 獲取當前鼠標速度
        /// </summary>
        /// <returns>鼠標速度</returns>
        public static int GetMouseSpeed()
        {
            return System.Windows.Forms.SystemInformation.MouseSpeed;
        }

        /// <summary>
        /// 設置鼠標滾輪滾動行數
        /// </summary>
        /// <param name="speed">滾輪每次滾動行數,最大值20,最小值1</param>
        public static void SetMouseWheel(uint speed)
        {
            uint wheelSpeed = speed;
            if (wheelSpeed < 1)
            {
                wheelSpeed = 1;
            }
            else if (wheelSpeed > 20)
            {
                wheelSpeed = 20;
            }
            SystemParametersInfo(SPI_SETWHEELSCROLLLINES, wheelSpeed, 0, 0);
        }
        /// <summary>
        /// 獲取鼠標滾輪滾動行數
        /// </summary>
        /// <returns>滾輪行數</returns>
        public static int GetMouseWheel()
        {
            return System.Windows.Forms.SystemInformation.MouseWheelScrollLines;
        }
    }

SystemParametersInfo應該是屬於接近系統的函數,.net並無相應的實現或封裝(設置部分)。讀取可以通過System.Windows.Forms.SystemInformation及System.Windows.SystemParameters讀取出其中的大部分設置,僅限於讀取。
uiAction 爲讀取或設置的目標參數。
uiParam 和pvParam用來讀取或設置參數值,實際使用過程參照MSDN。
fWinIni 指示是否更新配置文件。

MSDN 鏈接: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947(v=vs.85).aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章