13

I've got an login application that has a swipe system that people only can use when they have a touchscreen. They can login by swiping their personal pattern swipe code.

Is it possible to check in C# or WPF if the user has a touchscreen? Even when he isn't using touch on it at that time?

KDP
  • 1,377
  • 3
  • 11
  • 13

3 Answers3

21

Within C# code to find out if a touch screen exists (doesn't check if its a single or multi-touch device though) by the using System.Windows.Input namespace in PresentationCore.

    public bool HasTouchInput()
    {
        foreach (TabletDevice tabletDevice in Tablet.TabletDevices)
        {
            //Only detect if it is a touch Screen not how many touches (i.e. Single touch or Multi-touch)
            if(tabletDevice.Type == TabletDeviceType.Touch)
                return true;
        }

        return false;
    }
Liam
  • 27,717
  • 28
  • 128
  • 190
Jason Horrocks
  • 566
  • 3
  • 13
1

I don't think there's anything available in managed code but you could use P/Invoke on Win32_DesktopMonitor. For more information see msdn.

I found this blog-post that might be of help even though it's on Windows CE: http://blog.nerdbank.net/2006/10/platform-detection-iii-how-to-detect.html

Liam
  • 27,717
  • 28
  • 128
  • 190
Simon Stender Boisen
  • 3,413
  • 20
  • 23
0

There is IInkTablet2 COM interface in Windows XP Tablet PC Edition or managed wrapper Microsoft.Ink.Tablet class for non-WPF applications. But it most of touch screen drivers are "mouse" drivers and can't be detected in this way.

Arci
  • 588
  • 7
  • 20