检测从地铁应用程序的桌面可用性(ARM检测,检测到Windows RT系统)(Detect Desk

2019-09-22 03:22发布

这是相关的一个问题获取操作系统版本在WinRT的Metro应用C# ,但不是它的重复。

是否有任何选项从地铁应用程序是否存在系统上可用的桌面功能可以检测? 我明白的操作系统版本检测不支持,这是确定的海事组织。

但是我的Metro应用需要知道是否有它运行的系统上可用的桌面。

通过桌面我的意思是可扩展的桌面 - 桌面,其中第三方桌面应用程序可以安装。 我们知道基于ARM的单位将在桌面过,但只与微软内置程序。

我能区分我的Metro应用是否在基于ARM的平板电脑不可扩展的桌面上运行VS上的所有其他(基于Intel)与扩展的桌面设备?

Answer 1:

一些更广泛的搜索后,我发现GetNativeSystemInfo方法。 该提示是正确的外出因此,网站-这个问题 。 这种做法似乎是由Windows应用商店的应用程序完全支持 - 在App证书套件测试尽管使用的PInvoke事实得很顺利。

最后我用下面的代码:

    [DllImport("kernel32.dll")]
    internal static extern void GetNativeSystemInfo(ref SystemInfo lpSystemInfo);

    internal static bool IsArmBased()
    {
        var sysInfo = new SystemInfo();
        GetNativeSystemInfo(ref sysInfo);
        return sysInfo.wProcessorArchitecture == ProcessorArchitectureArm; //ushort 5
    }

这似乎是一个解决方案,我一直在寻找。 请告诉我,如果不还是让我意识到连接到这种方法什么问题。 谢谢。



Answer 2:

如果这是HTML,您可以使用window.cpuClass得到,如果它是ARM,x86或AMD64。

非动态版本是使用目标特定的架构,而不是AnyCPU,然后用的#ifdefs在构建时硬编码使用的口味。 你不过提交3包店。



Answer 3:

使用try {}赶上(){}来访问这些库,如果有什么不顺心假设ARM版本。



文章来源: Detect Desktop availability from Metro application (detect ARM, detect Windows RT system)