Можно ли сообщить моей программе С# 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. Но большинство драйверов сенсорного экрана являются "мышиными" драйверами и не могут быть обнаружены таким образом.