从 Metro 应用程序检测桌面可用性(检测 ARM、检测 Windows RT 系统)

2024-01-27

这是一个相关的问题在 WinRT Metro 应用程序 C# 中获取操作系统版本 https://stackoverflow.com/questions/10125324/get-os-version-in-winrt-metro-app-c-sharp但不是它的副本。

是否有任何选项可以从 Metro 应用程序检测系统上是否有可用的桌面功能?据我所知,不支持操作系统版本的检测,在我看来这是可以的。

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

我所说的桌面是指可扩展桌面 - 可以安装第 3 方桌面应用程序的桌面。正如我们所知,基于 ARM 的设备也将拥有桌面,但仅限于 Microsoft 内置程序。

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


经过一些更广泛的搜索我发现获取本机系统信息 http://msdn.microsoft.com/en-us/library/windows/apps/ms724340.aspx方法。提示就在 SO 网站上 - 这question https://stackoverflow.com/questions/10115283/how-can-i-get-the-number-of-logical-cpus-on-winrt。这种方法似乎得到了 Windows 应用商店应用程序的完全支持 - 尽管使用了 pinvoke,但 App Cert Kit 测试仍运行顺利。

我最终得到以下代码:

    [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
    }

这似乎是我一直在寻找的解决方案。如果没有,请告诉我,或者让我知道与这种方法相关的任何问题。谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Metro 应用程序检测桌面可用性(检测 ARM、检测 Windows RT 系统) 的相关文章

随机推荐