13

我正在开发具有 Windows 8 Metro 风格的应用程序。与平板电脑相比,如果它在台式电脑上运行,此应用程序具有更多功能。但我的问题是如何检测应用程序是否在 PC 或 Tab 中运行。我不想为 PC 和 TAB 分别发布 2 版本。

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

4

3 回答 3

7

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

var hasTouch = Windows.Devices.Input
                  .PointerDevice.GetPointerDevices()
                  .Any(p => p.PointerDeviceType == Windows.Devices.Input.PointerDeviceType.Touch);
于 2012-04-11T16:46:25.773 回答
5

@Mahantesh:如果它专门在台式电脑和平板电脑(不包括笔记本电脑)之间,那么您可以检查“电池属性”,例如交流电/电池供电、电池剩余电量等,据我所知,这仅适用于使用电池运行的计算机电源和桌面当然不会那样做。

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

于 2012-04-12T19:13:39.320 回答
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 处理器上。您可能需要找到目标处理器类型或传入目标处理器类型列表。

于 2012-04-11T15:22:34.293 回答