KeyRoutedEventArgs.DeviceId Свойство

Определение

Возвращает уникальный идентификатор устройства ввода, создающего это событие ключа.

Используйте DeviceId, чтобы различать все подключенные устройства, которые могут генерировать ключевые события, например несколько игровых контроллеров.

DeviceId поддерживается не для всех устройств ввода.

public:
 property Platform::String ^ DeviceId { Platform::String ^ get(); };
winrt::hstring DeviceId();
public string DeviceId { get; }
var string = keyRoutedEventArgs.deviceId;
Public ReadOnly Property DeviceId As String

Значение свойства

String

Platform::String

winrt::hstring

Уникальный идентификатор устройства ввода, связанного с событием ключа, или пустая строка для неподдерживаемого устройства. Одному и тому же устройству можно назначать разные идентификаторы при каждом подключении.

Требования к Windows

Семейство устройств
Windows 10 Anniversary Edition (появилось в 10.0.14393.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v3.0)

Комментарии

Некоторые устройства, такие как Xbox, позволяют нескольким пользователям входить в систему для одного интерактивного сеанса. Это свойство DeviceId полезно для получения сведений для определенной учетной записи пользователя, связанной с устройством ввода.

В Windows 10 и более поздних версиях приложение универсальная платформа Windows (UWP) не имеет доступа к сведениям пользователя без явного согласия пользователя (в отличие от Windows 8, где разрешение предоставляется по умолчанию).

универсальная платформа Windows приложение (UWP), которое получает доступ к сведениям о пользователе, должно объявить возможность userAccountInformation (Windows.System.UserDeviceAssociation.FindUserFromDeviceId, Windows.System.User.FindAllAsync и User.GetPropertiesAsync можно использовать для получения данных).

Когда эта возможность объявлена, пользователям, устанавливая приложение, предлагается разрешить доступ к своей информации. Если пользователь разрешает приложению доступ к информации, приложение отображается на странице Конфиденциальность приложения "Параметры" Windows 10 (Параметры > Сведения об учетной записи конфиденциальности>).

private async void OnKeyDown(object sender, KeyRoutedEventArgs e)
{
  User user = 
    Windows.System.UserDeviceAssociation.FindUserFromDeviceId(e.DeviceId);
  string displayName = 
    (string)await user.GetPropertyAsync(KnownUserProperties.DisplayName);
  System.Diagnostics.Debug.WriteLine(displayName);
}

Иногда событие OnKeyDown может не сработать, так как событие уже было обработано элементом управления. В этом случае вызовите метод GetCurrentKeyEventDeviceId из обработчика KeyDownобъекта CoreWindow, как показано ниже.

public MainPage()
{
  this.InitializeComponent();
  Windows.UI.Core.CoreWindow.GetForCurrentThread().KeyDown += OnKeyDown;
}

private async void OnKeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
  string device = Windows.UI.Core.CoreWindow.GetForCurrentThread().GetCurrentKeyEventDeviceId();
  User user = Windows.System.UserDeviceAssociation.FindUserFromDeviceId(device);
  string displayName = (string)await user.GetPropertyAsync(KnownUserProperties.DisplayName);
  System.Diagnostics.Debug.WriteLine("OnKeydown:" + displayName);
}

Применяется к

См. также раздел