因項目需要在程序設置系統的鼠標速度及滾輪速度,在百度尋求解決方案,竟然沒有找到,開始以爲微軟沒有公開函數,後來沒有辦法,只能科學上網向谷歌尋求幫助,還真的找到了,而且資料還不少,還是外國牛人多~~~
直接貼代碼
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