【问题标题】:How to detect if Windows 10 is in tablet mode如何检测 Windows 10 是否处于平板电脑模式
【发布时间】:2019-03-18 16:18:39
【问题描述】:

我正在尝试寻找一种方法来检测 Windows 10 是否处于平板电脑模式。请注意,这不是查询用户是否有平板电脑——这可以通过GetSystemMetrics(SM_CONVERTIBLESLATEMODE) 解决。在我的例子中,上面的函数总是返回 0——无论 Win10 是否处于平板模式。

This 没有结尾的线程似乎表明没有可以检测平板电脑模式的 WinAPI 调用。我希望不是这样,因为无论是否处于平板电脑模式,操作系统都会发布不同的 WM 消息。在平板电脑模式WM_SHOWWINDOW isn't sent 这意味着如果 Windows 10 处于平板电脑模式,我需要以不同的方式解决应用程序的启动问题。

我可以在其他地方收到WM_SHOWWINDOW 消息后(就在调用ShowWindow 之后)移动当前触发的代码,但随后我得到一个带有空参数的WM_DPICHANGED 消息。

【问题讨论】:

标签: winapi windows-10 tablet-pc


【解决方案1】:

@Raymond 指出你可以使用 UIViewSettings.UserInteractionMode。

参考“Tablet mode”“How can I detect whether my PC is in tablet mode?

【讨论】:

  • 嗯,这没有记录或支持。使用支持的 API:UserInteractionMode。
  • @RaymondChen 的博客和@RitaHan 提到的 Windows 文档页面上的示例似乎是我正在寻找的。然而,在实现它们之后,即使我包含UIViewSettingsInterop.h ,我也会收到uiViewSettingsInterop->GetForWindowpointer to incomplete type not allowed 消息。我的NTDDI_VERSION 是 0x0603(针对 Win8.1 及更高版本)。我错过了什么明显的东西吗?
  • 从 Windows 10 开始支持 IUIViewSettingsInterop。请注意,IUIViewSettingsInterop 的定义在 #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) 内部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 2013-10-19
  • 1970-01-01
  • 2014-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多