Можно ли сообщить моей программе С# wpf, есть ли у пользователя сенсорный экран или нет?
У меня есть приложение для входа, в котором есть система салфетки, которую люди могут использовать только при наличии сенсорного экрана. Они могут входить в систему, прокручивая свой код для прокрутки личного кода.
Можно ли проверить С# или WPF, если у пользователя есть сенсорный экран? Даже когда он не прикасается к нему в это время?
Ответы
Ответ 1
Внутри кода С#, чтобы узнать, существует ли сенсорный экран (не проверяет, есть ли его одно или многоточечное устройство), используя пространство имен System.Windows.Input
в 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;
}
Ответ 2
Я не думаю, что в управляемом коде ничего нет, но вы можете использовать P/Invoke на Win32_DesktopMonitor
. Для получения дополнительной информации см. msdn.
Я нашел этот блог-пост, который может быть полезен, хотя он и в Windows CE: http://blog.nerdbank.net/2006/10/platform-detection-iii-how-to-detect.html
Ответ 3
Существует IInkTablet2 COM-интерфейс в Windows XP Tablet PC Edition или управляемая оболочка Microsoft.Ink.Tablet для приложений, отличных от WPF. Но большинство драйверов сенсорного экрана являются "мышиными" драйверами и не могут быть обнаружены таким образом.