如何检测 Windows 设备是否支持触摸

本文关键字:是否 支持 触摸 Windows 何检测 检测 | 更新日期: 2023-09-27 18:36:22

如何检测设备是否在 C# 中为 WinForms 应用(不是 WPF)启用了触摸功能。

  • 我找到了有关GetSystemMetrics的信息。但是我找不到如何在 C# 中使用它。

  • 我尝试使用System.Windows.Input.Tablet类。但是它不会出现在C#中,即使我使用的是.NET Framework 4.5。

  • 我尝试使用System.Windows.Devices.但是它不会出现在C#中,即使我使用的是.NET Framework 4.5。

  • 我还检查了检测Windows 8应用商店应用程序是否具有触摸屏以及如何检测支持触摸的设备(Win 8,C#.NET),这似乎使这个问题重复。 但是,这些都没有回答我的问题。

如何检测 Windows 设备是否支持触摸

GetSystemMetrics似乎是正确的方法。它应该通过 P/Invoke 访问,如下所示:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int GetSystemMetrics(int nIndex);
public static bool IsTouchEnabled()
{
     const int MAXTOUCHES_INDEX = 95;
     int maxTouches = GetSystemMetrics(MAXTOUCHES_INDEX);
     return maxTouches > 0;
}

取自这个答案

var hasTouch = Windows.Devices.Input
              .PointerDevice.GetPointerDevices()
              .Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch);