Обнаружение Windows Mobile против "простой" Windows CE - PullRequest
3 голосов
/ 15 ноября 2011

Как мое приложение Compact Framework может определить, работает ли оно под Windows Mobile (меню «Пуск» вверху, строка меню внизу), в отличие от «простой» Windows CE (запуск Меню внизу, строка меню внутри приложения)?

Поскольку Windows Mobile работает поверх ядра Windows CE, Environment.OSVersion.Version здесь не очень помогает (просто возвращает номер версии ядра CE).

Ответы [ 4 ]

4 голосов
/ 15 ноября 2011

Если вы любезно обратитесь к публикации часто задаваемых вопросов по MSDN Microsoft в разделе >> Часто задаваемые вопросы по VSD << </a>, это элемент № 10: Как определить версию платформы и Windows Mobile?

Я бы перепостил, но есть небольшой пример кода и несколько ссылок в посте, на копирование которых здесь потребуется много времени.

2 голосов
/ 15 ноября 2011

Вы также можете проверить наличие сборок Microsoft.WindowsMobile и Microsoft.WindowsMobile.Status ... CE не содержит этих дополнительных надстроек, которые WM накладывал поверх кодовой базы CE.

2 голосов
/ 15 ноября 2011

Начиная с Framework 3.5, в пространстве имен Microsoft.WindowsCE.Forms есть свойство SystemSettings.Platform, которое предоставляет эту информацию (возвращая WinCEGeneric, PocketPC или Smartphone).

1 голос
/ 15 ноября 2011

Мы используем что-то вроде этого. Но каждое устройство CE, вероятно, будет возвращать разные строки.

        [DllImport("coredll.dll", SetLastError = true)]
    public static extern bool SystemParametersInfoGetString(uint uiAction, uint uiParam, System.Text.StringBuilder pvParam, uint fWinIni);

                System.Text.StringBuilder platformBuff = new System.Text.StringBuilder(100);
                if (SystemParametersInfoGetString(SPI_GETPLATFORMTYPE, (uint)platformBuff.Capacity, platformBuff, 0))
                    return platformBuff.ToString();
...