使用 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);
}
}
还有其他方法可以完成此任务吗?
我发现在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?)
}
}
}