检测设备是作为笔记本电脑还是平板电脑使用

3

随着像Vaio Duo、Vaio Flip、XPS 12、Lenovo Yoga等许多新设备的推出,它们都是超极本/平板电脑可转换设备。那么,我该如何检测它当前正在使用哪种形态?我知道Vaio Duo会根据其用作笔记本电脑还是平板电脑而切换性能模式,因此应该有某种方法,无论是通过PInvoke还是其他方式。


1
这为什么很重要? - abhi
4个回答

5
在Windows中,要直接检查您的系统是否处于平板电脑(或“slate”)模式下,可以调用GetSystemMetrics(SM_CONVERTIBLESLATEMODE)。有关执行此操作的示例应用程序的讨论,请查看https://software.intel.com/en-us/articles/how-to-write-a-2-in-1aware-application
除了在启动时检查外,如果模式发生更改,您还应该能够获取WM_SETTINGCHANGE消息,该消息将具有“ConvertibleSlateMode”作为其LPARAM。但是,在某些情况下,我们发现此消息丢失了。因此,在应用程序中手动强制更改模式是个好主意。

请注意,此检查可能存在缺陷或歧义。如果您将其用于不可转换的设备上,它将始终返回“0”,这与表明设备处于“平板电脑”模式的代码相同。我尚未找到100%可靠的方法来处理此问题。目前我能做到的最好的是通过WMI在Win32_SystemEnclosure.ChassisTypes上进行一些初始过滤,以查看设备是否类似于可转换设备,然后使用此度量检查。 - donovan
你知道有哪些示例应用程序可以测试模式感知吗? - Hugo M. Zuleta

1

就像我提到的Duo和其性能模式一样,它是类似的。例如,像音乐播放器这样的东西可能会选择在笔记本电脑模式下显示可视化效果,但希望在平板电脑模式下禁用它,以减少CPU / GPU使用率,从而使温度保持稳定。此外,这个产品已经停产了吗?最后一次更新似乎是在2010年。 - Lunyx
目前我没有可以测试的机器。等我找到了再告诉你,可能下周某个时候。 - Lunyx
我添加了一个答案,其中包含有关此主题的更多最新信息。我正在寻找的似乎与倾斜计相关联。 - Lunyx
1
也许你只需要知道键盘是否连接/活动? - Mikael Dúi Bolinder

1

我今天一直在做这个项目。因为没有找到合适的包装器,所以我决定创建一个。我专注于通用可移植的类库(因为监视器中使用了调度程序),但我可以进行移植...

下面是:

https://github.com/daemun/DeviceExtCapabilitiesUniversal


非常感谢!这看起来非常有前途。我注意到NuGet包没有指定许可证... - Stefan Egli


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接