対象としている.NETCFのバージョンについては言及していないので、すべてのケースについて説明します:-)
.NET CF 3.5より前のバージョンについては、http://www.christec.co.nz/blog/archives/77にある私のブログ投稿「アプリケーションはどのデバイスで実行されていますか」を参照してください。プラットフォーム/デバイスタイプの検出シナリオの数をカバーしています。
あなたの場合、P / 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が過去数年間にオペレーティングシステムの命名規則を何度も変更したという事実かもしれません。
古い名前はSmartphoneとPocketPCで、次のように新しい名前にマッピングされます。
SmartPhone = Windows Mobile Standard (no touchscreen)
PocketPC = Windows Mobile Professional (phone) or Windows Mobile Classic (no phone)
これらの名前はすべて、最近再び「WindowsPhone」に変更されました。