使用 C# 从 Windows 8 读取惯用手设置

本文关键字:设置 读取 Windows 使用 | 更新日期: 2023-09-27 18:31:51

在Windows 8上,我试图使用C#确定鼠标的手感。换句话说,我正在尝试阅读此设置:

控制面板''硬件和声音''鼠标 -> 交换机主和次 按钮。

我尝试过使用 WMI,但没有运气。无论我使用什么鼠标,惯用手属性值始终为 null。

SelectQuery selectQuery = new SelectQuery("Win32_PointingDevice");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);
foreach (var mouse in searcher.Get())
{
    foreach (var property in mouse.Properties)
    {
        Console.WriteLine("{0}: {1}", property.Name, property.Value);
    }
}

还有其他方法可以完成此任务吗?

使用 C# 从 Windows 8 读取惯用手设置

我发现在user32上公开的GetSystemMetrics.dll可用于返回您寻找的交换鼠标按钮数据。下面是一些参考资料和一个用于测试的快速控制台应用。第三个链接包含一些有关如何将 GetSystemMetrics 与 C# 一起使用的更多"官方"示例。

获取系统指标

检测交换鼠标的错误方法

常量等的参考

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ConsoleApplication2
{
    class Program
    {
        [DllImport("user32.dll")]
        public static extern Int32 GetSystemMetrics(Int32 bSwap);
        static void Main(string[] args)
        {
            //normally you would make this as a constant:
            int SM_SWAPBUTTON = 23;
            int isLeftHanded = GetSystemMetrics(SM_SWAPBUTTON);
            //0 means not swapped, 1 means swapped (left handedness?)
        }
    }
}