KeyRoutedEventArgs.DeviceId 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
이 키 이벤트를 생성한 입력 디바이스의 고유 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
속성 값
키 이벤트와 연결된 입력 디바이스의 고유 식별자 또는 지원되지 않는 디바이스의 빈 문자열입니다. 연결될 때마다 동일한 디바이스에 다른 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.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 이벤트가 실행되지 않을 수 있습니다. 이 경우 여기에 표시된 것처럼 CoreWindow의 KeyDown 처리기에서 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);
}