我已经使用 SystemState.PhoneRadioPresent 来确定设备是标准设备还是专业设备,但这不仅仅是为了确定它是袖珍电脑还是智能手机。
我有一部没有触摸屏或鼠标的智能手机,并且有两个 GUI。一种处理带有触摸屏或鼠标的移动设备,另一种处理仅使用键盘的智能手机。
我如何确定它是哪种移动设备?
提前致谢
我已经使用 SystemState.PhoneRadioPresent 来确定设备是标准设备还是专业设备,但这不仅仅是为了确定它是袖珍电脑还是智能手机。
我有一部没有触摸屏或鼠标的智能手机,并且有两个 GUI。一种处理带有触摸屏或鼠标的移动设备,另一种处理仅使用键盘的智能手机。
我如何确定它是哪种移动设备?
提前致谢
您没有提及您所针对的 .NET CF 版本,因此我将涵盖所有情况:-)
对于 .NET CF 3.5 之前的版本,请查看我的博客文章“我的应用程序在什么设备上运行”,网址为http://www.christec.co.nz/blog/archives/77。它涵盖了许多平台/设备类型检测场景。
在您的情况下,P/Invoke SystemParametersInfo API并请求 SPI_GETPLATFORMTYPE 参数。您将得到一个字符串,它是“SmartPhone”(Windows Mobile Standard)或“PocketPC”(Windows Mobile Professional 或 Classic)。
可以从我提到的博客文章中下载示例应用程序。
如果您使用的是 .NET CF 3.5,那就更容易了,因为 BCL 已更新为包含这个方便的功能。查看SystemState.Platform属性。它是一个简单的枚举类型,具有诸如 WinCEPlatform.Smartphone 和 WinCEPlatform.PocketPC 之类的值。
IE
if (SystemSettings.Platform == WinCEPlatform.Smartphone)
MessageBox.Show("I am on a standard device");
else
MessageBox.Show("I am on a professional or classic device");
查看 hjb417 提供的链接,那里提供的信息也是正确的。这里的一些混淆可能是微软在过去几年中多次更改了他们的操作系统命名约定。
旧名称是 Smartphone 和 PocketPC,它们映射到新名称如下
SmartPhone = Windows Mobile Standard (no touchscreen)
PocketPC = Windows Mobile Professional (phone) or Windows Mobile Classic (no phone)
这些名称最近都再次更改为“Windows Phone”。