Вы не упоминаете, на какую версию .NET CF вы нацелены, поэтому я рассмотрю все случаи: -)
Для предварительной версии .NET CF 3.5 ознакомьтесь с моим сообщением в блоге "На каком устройстве работает мое приложение", доступным по адресу http://www.christec.co.nz/blog/archives/77.. Оно охватывает ряд сценариев определения типа платформы / устройства.
В вашем случае P / Invoke SystemParametersInfo API и запросить параметр SPI_GETPLATFORMTYPE. Вы получите строку «SmartPhone» (Windows Mobile Standard) или «PocketPC» (Windows Mobile Professional или Classic).
Образец приложения доступен для скачивания из поста в блоге, о котором я упоминал.
Если вы используете .NET CF 3.5, это еще проще, поскольку BCL был обновлен и теперь включает эту удобную функцию. Взгляните на свойство SystemState.Platform . Это простой перечисляемый тип со значениями, такими как WinCEPlatform.Smartphone и WinCEPlatform.PocketPC.
т.е.
if (SystemSettings.Platform == WinCEPlatform.Smartphone)
MessageBox.Show("I am on a standard device");
else
MessageBox.Show("I am on a professional or classic device");
При просмотре ссылок, предоставленных hjb417, предоставленная информация также верна. Некоторая путаница здесь может заключаться в том, что Microsoft за последние несколько лет несколько раз меняла свои соглашения об именах операционных систем.
Старыми именами были Смартфон и PocketPC, которые соответствуют новым именам следующим образом
SmartPhone = Windows Mobile Standard (no touchscreen)
PocketPC = Windows Mobile Professional (phone) or Windows Mobile Classic (no phone)
Эти имена только недавно изменились на "Windows Phone".