确定Metro应用程序正在Windows 8选项卡或台式PC中运行

我正在使用Windows 8 metro风格开发应用程序。 如果它在平板电脑上运行,与平板电脑相比,此应用程序还有一些function。 但我的问题是如何检测app在PC或Tab中运行。 我不想单独为PC和TAB发布2版本。

请帮我。 更新:Wheter可以使用GetSystemMatrics吗? 在桌面上,我们的应用程序的行为类似于客户端和服务器,但在选项卡和移动设备中,它的行为仅限于客户端

Windows.Devices命名空间具有大量有关设备function的信息。 例如,要确定设备是否启用了触摸function,您可以使用:

var hasTouch = Windows.Devices.Input .PointerDevice.GetPointerDevices() .Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch); 

@Mahantesh:如果它是专门用于台式电脑和平板电脑( 不包括笔记本电脑 )之间,那么你可以查看“电池属性”,例如交流/电池供电,电池剩余电量等 ,据我所知,这些只适用于电池供电的电脑电源&当然桌面不这样做。

简单来说,电池通知不适用于我的台式电脑,而它适用于我的笔记本电脑。

我的建议是调用CoreDLL中的GetSystemInfo API

这是一个示例调用:

  [DllImport("coredll")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } 

如果您从平板电脑中获取此信息,它应该返回2577的处理器类型,因为它在我认为的ARM处理器上运行。 您可能需要找到要定位的特定处理器类型,或者传递目标处理器类型列表。