Freigeben über


Identifizieren von Eingabegeräten

Identifizieren Sie die Eingabegeräte, die mit einem Windows-App-Gerät verbunden sind, und identifizieren Sie ihre Funktionen und Attribute.

Wichtige APIs: Windows.Devices.Input, Windows.UI.Input, Windows.UI.Xaml.Input

Abrufen von Mauseigenschaften

Der Windows.Devices.Input-Namespace enthält die MouseCapabilities-Klasse, die zum Abrufen der Eigenschaften verwendet wird, die von einem oder mehreren verbundenen Mäusen verfügbar gemacht werden. Erstellen Sie einfach ein neues MouseCapabilities-Objekt , und rufen Sie die gewünschten Eigenschaften ab.

Hinweis : Die von den hier beschriebenen Eigenschaften zurückgegebenen Werte basieren auf allen erkannten Mäusen: Boolesche Eigenschaften geben ungleich Null zurück, wenn mindestens eine Maus eine bestimmte Funktion unterstützt, und numerische Eigenschaften geben den maximal verfügbaren Wert einer Maus zurück.

 

Der folgende Code verwendet eine Reihe von TextBlock-Elementen , um die einzelnen Mauseigenschaften und -werte anzuzeigen.

private void GetMouseProperties()
{
    MouseCapabilities mouseCapabilities = new Windows.Devices.Input.MouseCapabilities();
    MousePresent.Text = mouseCapabilities.MousePresent != 0 ? "Yes" : "No";
    VertWheel.Text = mouseCapabilities.VerticalWheelPresent != 0 ? "Yes" : "No";
    HorzWheel.Text = mouseCapabilities.HorizontalWheelPresent != 0 ? "Yes" : "No";
    SwappedButtons.Text = mouseCapabilities.SwapButtons != 0 ? "Yes" : "No";
    NumButtons.Text = mouseCapabilities.NumberOfButtons.ToString();
}

Abrufen von Tastatureigenschaften

Der Windows.Devices.Input-Namespace enthält die KeyboardCapabilities-Klasse, die verwendet wird, um abzurufen, ob eine Tastatur angeschlossen ist. Erstellen Sie einfach ein neues KeyboardCapabilities-Objekt, und rufen Sie die KeyboardPresent-Eigenschaft ab.

Der folgende Code verwendet ein TextBlock-Element, um die Tastatureigenschaft und den Wert anzuzeigen.

private void GetKeyboardProperties()
{
    KeyboardCapabilities keyboardCapabilities = new Windows.Devices.Input.KeyboardCapabilities();
    KeyboardPresent.Text = keyboardCapabilities.KeyboardPresent != 0 ? "Yes" : "No";
}

Abrufen von Toucheigenschaften

Der Windows.Devices.Input-Namespace enthält die TouchCapabilities-Klasse, die verwendet wird, um abzurufen, ob Touchdigalisierer verbunden sind. Erstellen Sie einfach ein neues TouchCapabilities-Objekt , und rufen Sie die gewünschten Eigenschaften ab.

Hinweis : Die von den hier beschriebenen Eigenschaften zurückgegebenen Werte basieren auf allen erkannten Touchdigisierern: Boolesche Eigenschaften geben ungleich Null zurück, wenn mindestens ein Digitalisierer eine bestimmte Funktion unterstützt, und numerische Eigenschaften geben den maximal verfügbaren Wert eines Digitalisierungsgebers zurück.

 

Der folgende Code verwendet eine Reihe von TextBlock-Elementen , um die Toucheigenschaften und -werte anzuzeigen.

private void GetTouchProperties()
{
    TouchCapabilities touchCapabilities = new Windows.Devices.Input.TouchCapabilities();
    TouchPresent.Text = touchCapabilities.TouchPresent != 0 ? "Yes" : "No";
    Contacts.Text = touchCapabilities.Contacts.ToString();
}

Abrufen von Zeigereigenschaften

Der Windows.Devices.Input-Namespace enthält die PointerDevice-Klasse, die verwendet wird, um abzurufen, ob erkannte Geräte Zeigereingaben unterstützen (Toucheingabe, Touchpad, Maus oder Stift). Erstellen Sie einfach ein neues PointerDevice-Objekt , und rufen Sie die gewünschten Eigenschaften ab.

Hinweis : Die von den hier beschriebenen Eigenschaften zurückgegebenen Werte basieren auf allen erkannten Zeigergeräten: Boolesche Eigenschaften geben ungleich Null zurück, wenn mindestens ein Gerät eine bestimmte Funktion unterstützt, und numerische Eigenschaften geben den Maximalwert zurück, der von einem Zeigergerät verfügbar gemacht wird.

Der folgende Code verwendet eine Tabelle, um die Eigenschaften und Werte für jedes Zeigergerät anzuzeigen.

private void GetPointerDevices()
{
    IReadOnlyList<PointerDevice> pointerDevices = Windows.Devices.Input.PointerDevice.GetPointerDevices();
    int gridRow = 0;
    int gridColumn = 0;

    for (int i = 0; i < pointerDevices.Count; i++)
    {
        // Pointer device type.
        TextBlock textBlock1 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock1);
        textBlock1.Text = (i + 1).ToString() + " Pointer Device Type:";
        Grid.SetRow(textBlock1, gridRow);
        Grid.SetColumn(textBlock1, gridColumn);

        TextBlock textBlock2 = new TextBlock();
        textBlock2.Text = pointerDevices[i].PointerDeviceType.ToString();
        Grid_PointerProps.Children.Add(textBlock2);
        Grid.SetRow(textBlock2, gridRow++);
        Grid.SetColumn(textBlock2, gridColumn + 1);

        // Is external?
        TextBlock textBlock3 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock3);
        textBlock3.Text = (i + 1).ToString() + " Is External?";
        Grid.SetRow(textBlock3, gridRow);
        Grid.SetColumn(textBlock3, gridColumn);

        TextBlock textBlock4 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock4);
        textBlock4.Text = pointerDevices[i].IsIntegrated.ToString();
        Grid.SetRow(textBlock4, gridRow++);
        Grid.SetColumn(textBlock4, gridColumn + 1);

        // Maximum contacts.
        TextBlock textBlock5 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock5);
        textBlock5.Text = (i + 1).ToString() + " Max Contacts:";
        Grid.SetRow(textBlock5, gridRow);
        Grid.SetColumn(textBlock5, gridColumn);

        TextBlock textBlock6 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock6);
        textBlock6.Text = pointerDevices[i].MaxContacts.ToString();
        Grid.SetRow(textBlock6, gridRow++);
        Grid.SetColumn(textBlock6, gridColumn + 1);

        // Physical device rectangle.
        TextBlock textBlock7 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock7);
        textBlock7.Text = (i + 1).ToString() + " Physical Device Rect:";
        Grid.SetRow(textBlock7, gridRow);
        Grid.SetColumn(textBlock7, gridColumn);

        TextBlock textBlock8 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock8);
        textBlock8.Text = pointerDevices[i].PhysicalDeviceRect.X.ToString() + "," +
            pointerDevices[i].PhysicalDeviceRect.Y.ToString() + "," +
            pointerDevices[i].PhysicalDeviceRect.Width.ToString() + "," +
            pointerDevices[i].PhysicalDeviceRect.Height.ToString();
        Grid.SetRow(textBlock8, gridRow++);
        Grid.SetColumn(textBlock8, gridColumn + 1);

        // Screen rectangle.
        TextBlock textBlock9 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock9);
        textBlock9.Text = (i + 1).ToString() + " Screen Rect:";
        Grid.SetRow(textBlock9, gridRow);
        Grid.SetColumn(textBlock9, gridColumn);

        TextBlock textBlock10 = new TextBlock();
        Grid_PointerProps.Children.Add(textBlock10);
        textBlock10.Text = pointerDevices[i].ScreenRect.X.ToString() + "," +
            pointerDevices[i].ScreenRect.Y.ToString() + "," +
            pointerDevices[i].ScreenRect.Width.ToString() + "," +
            pointerDevices[i].ScreenRect.Height.ToString();
        Grid.SetRow(textBlock10, gridRow++);
        Grid.SetColumn(textBlock10, gridColumn + 1);

        gridColumn += 2;
        gridRow = 0;
    }

Beispiele

Archivbeispiele