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

时间:2012-04-11 06:59:39

标签: c# windows-8 microsoft-metro windows-runtime

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

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

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:5)

@Mahantesh:如果是专门用于台式电脑和电脑之间的话。平板电脑(不包括笔记本电脑),然后你可以查看“电池属性”,如AC /电池供电,电池剩余电量等。据我所知,仅适用于使用电池供电的电脑当然桌面不会这样做。

简单来说,我的台式电脑无法使用电池通知,而我的笔记本电脑则没有。

答案 2 :(得分:0)

我的建议是调用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处理器上运行。您可能需要找到要定位的特定处理器类型,或者传入目标处理器类型列表。