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?
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;
}
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
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.