識別連接到 Windows 應用程式裝置的輸入裝置,並標明它們的功能與屬性。
重要 API: Windows.Devices.Input、 Windows.UI.Input、 Windows.UI.Xaml.Input
擷取滑鼠屬性
Windows.Devices.Input 命名空間包含 MouseCapabilities 類別,用於檢索一個或多個連接滑鼠所暴露的屬性。 只要建立一個新的 MouseCapabilities 物件,取得你想要的屬性即可。
注意 此處討論的屬性回傳的值是基於所有偵測到的滑鼠:如果至少有一只滑鼠支援特定功能,則布林屬性會回傳非零,數值屬性則會回傳任何一只滑鼠所暴露的最大值。
以下程式碼使用一系列 TextBlock 元素來顯示滑鼠的屬性與值。
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();
}
擷取鍵盤屬性
Windows.Devices.Input 命名空間包含 KeyboardCapabilities 類別,用於檢索鍵盤是否已連接。 只要建立一個新的 KeyboardCapabilities 物件,取得 KeyboardPresent 屬性即可。
以下程式碼使用 TextBlock 元素來顯示鍵盤屬性與值。
private void GetKeyboardProperties()
{
KeyboardCapabilities keyboardCapabilities = new Windows.Devices.Input.KeyboardCapabilities();
KeyboardPresent.Text = keyboardCapabilities.KeyboardPresent != 0 ? "Yes" : "No";
}
檢索觸碰屬性
Windows.Devices.Input 命名空間包含 TouchCapabilities 類別,用於檢索是否有觸控數位化器連接。 只要建立一個新的 TouchCapabilities 物件,取得你想要的屬性即可。
注意 此處討論的屬性回傳的值是基於所有偵測到的觸控數位化器:若至少有一個數位化器支持特定功能,則布林屬性回傳非零,數值屬性則回傳任何一個數位化器所能提供的最大值。
以下程式碼使用一系列 TextBlock 元素來顯示觸控屬性與值。
private void GetTouchProperties()
{
TouchCapabilities touchCapabilities = new Windows.Devices.Input.TouchCapabilities();
TouchPresent.Text = touchCapabilities.TouchPresent != 0 ? "Yes" : "No";
Contacts.Text = touchCapabilities.Contacts.ToString();
}
擷取指標屬性
Windows.Devices.Input 命名空間包含 PointerDevice 類別,用以檢索是否有偵測到的裝置支援指標輸入(觸控、觸控板、滑鼠或手寫筆)。 只要建立一個新的 PointerDevice 物件,取得你想要的屬性即可。
注意 此處討論的屬性所回傳的值是基於所有偵測到的指針裝置:布林屬性會在至少有一台裝置支援特定功能時回傳非零,而數值屬性則回傳任何一個指標裝置所展現的最大值。
以下程式碼使用表格來顯示每個指標裝置的屬性與值。
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;
}