KeyRoutedEventArgs.DeviceId 속성

정의

이 키 이벤트를 생성한 입력 디바이스의 고유 ID를 가져옵니다.

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

키 이벤트와 연결된 입력 디바이스의 고유 식별자 또는 지원되지 않는 디바이스의 빈 문자열입니다. 연결될 때마다 동일한 디바이스에 다른 ID를 할당할 수 있습니다.

Windows 요구 사항

디바이스 패밀리
Windows 10 Anniversary Edition (10.0.14393.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v3.0에서 도입되었습니다.)

설명

Xbox와 같은 일부 장치는 여러 사용자가 단일 대화형 세션에 로그인할 수 있도록 허용합니다. 이 DeviceId 속성은 입력 디바이스와 연결된 특정 사용자 계정에 대한 정보를 검색하는 데 유용합니다.

Windows 10 이상에서는 UWP(유니버설 Windows 플랫폼) 앱이 명시적 사용자 동의 없이 사용자 정보에 액세스할 수 없습니다(기본적으로 권한이 부여되는 Windows 8 달리).

사용자 정보에 액세스하는 UWP(유니버설 Windows 플랫폼) 앱은 userAccountInformation 기능을 선언해야 합니다(Windows.System.UserDeviceAssociation.FindUserFromDeviceId, Windows.System.User.FindAllAsyncUser.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 이벤트가 실행되지 않을 수 있습니다. 이 경우 여기에 표시된 것처럼 CoreWindowKeyDown 처리기에서 GetCurrentKeyEventDeviceId 메서드를 호출합니다.

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);
}

적용 대상

추가 정보