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 などの一部のデバイスでは、複数のユーザーが 1 つの対話型セッションにサインインできます。 この 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 イベントが発生しないことがあります。 この場合は、次に示すように、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);
}