KeyRoutedEventArgs.DeviceId 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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 及更高版本中,通用 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);
}