如何检测Windows设备是否启用了触控功能

时间:2015-01-06 17:29:40

标签: c# .net winforms

如何检测设备是否在c#中为WinForms应用程序(非WPF)启用了触控功能。

我发现有关GetSystemMetrics的信息......无法在c#中找到如何使用它。

我尝试使用System.Windows.Input.Tablet类......即使我使用.Net Framework 4.5,也不会出现在c#中。

我尝试使用System.Windows.Devices ...不会出现在c#中,即使我使用的是.Net Framework 4.5。

我还检查了ThisThis,这似乎使这个问题重复。但是,这些都没有回答我的问题。

2 个答案:

答案 0 :(得分:9)

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

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int GetSystemMetrics(int nIndex);

public static bool IsTouchEnabled()
{
     int MAXTOUCHES_INDEX = 0x95;
     int maxTouches = GetSystemMetrics(MAXTOUCHES_INDEX);

     return maxTouches > 0;
}

答案 1 :(得分:1)

取自this answer

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