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 などの一部のデバイスでは、複数のユーザーが 1 つの対話型セッションにサインインできます。 この DeviceId プロパティは、入力デバイスに関連付けられている特定のユーザー アカウントの情報を取得する場合に便利です。

Windows 10以降では、ユニバーサル Windows プラットフォーム (UWP) アプリは明示的なユーザーの同意なしにユーザー情報にアクセスできません (既定でアクセス許可が付与されるWindows 8とは異なります)。

ユーザー情報にアクセスするユニバーサル Windows プラットフォーム (UWP) アプリでは、userAccountInformation 機能を宣言する必要があります (Windows.System.UserDeviceAssociation.FindUserFromDeviceIdWindows.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);
}

適用対象

こちらもご覧ください