PocketPC ( Proffesional/Clasicc Edition ) と Smartphone ( Standard Edition ) では一部のコントロールの対応可否に違いがあったり、デバイスのプラットフォームによって処理を分けたい場合などあります。
今回は、デバイスプラットフォームの種別を取得します。.NET Compact Framework 3.5 以降をお使いの方は、より簡単にデバイスプラットフォームの種別を取得する方法がありますので、「デバイス プラットフォームを取得する(3.5~)」をご覧下さい。
以下にサンプルコードを示します。
デバイス プラットフォームの種別を取得する
VB.NET
' システム全体に関するパラメータのいずれかを取得または設定します。 <DllImport("Kernel32.dll")> _ Private Shared Function SystemParametersInfo( _ ByVal uiAction As System.UInt32, _ ByVal uiParam As System.UInt32, _ ByVal pvParam As System.Text.StringBuilder, _ ByVal fWinIni As System.UInt32) As Integer End Function ' SystemParametersInfo 関数の引数に設定する Private Shared SPI_GETPLATFORMTYPE As System.UInt32 = 257 ' デバイス プラットフォームの種別を取得する Shared Function GetWinCEPlatformName() As String ' プラットフォームIDがWinCEでなければ空文字列を返す If (System.Environment.OSVersion.Platform <> _ PlatformID.WinCE) Then Return String.Empty End If ' SystemParametersInfo 関数から プラットフォーム種別を取得 Dim sb As New System.Text.StringBuilder(200) SystemParametersInfo(SPI_GETPLATFORMTYPE, 200, sb, 0) Return sb.ToString() End Function ' ボタンを押下したらテキストボックスにプラットフォームの種別が表示されます。 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) ' デバイスのプラットフォームを取得する Dim winCEPlatformName As String = GetWinCEPlatformName() ' Proffesional/Clasicc Edition の場合、"PocketPC" ' Standard Edition の場合、"SmartPhone"が返って来る TextBox1.Text = winCEPlatformName End Sub
C#
// システム全体に関するパラメータのいずれかを取得または設定します。 [DllImport("Kernel32.dll")] private static extern int SystemParametersInfo( System.UInt32 uiAction, System.UInt32 uiParam, System.Text.StringBuilder pvParam, System.UInt32 fWinIni); // SystemParametersInfo 関数の引数に設定する private static System.UInt32 SPI_GETPLATFORMTYPE = 257; // デバイス プラットフォームの種別を取得する private string GetWinCEPlatformName() { // プラットフォームIDがWinCEでなければ空文字列を返す if ((System.Environment.OSVersion.Platform != System.PlatformID.WinCE)) { return string.Empty; } // SystemParametersInfo 関数から プラットフォーム種別を取得 System.Text.StringBuilder sb = new System.Text.StringBuilder(200); SystemParametersInfo(SPI_GETPLATFORMTYPE, 200, sb, 0); return sb.ToString(); } // ボタンを押下したらテキストボックスにプラットフォームの種別が表示されます。 private void Button1_Click(System.Object sender, System.EventArgs e) { // デバイスのプラットフォームを取得する string winCEPlatformName = GetWinCEPlatformName(); // Proffesional/Clasicc Edition の場合、"PocketPC" // Standard Edition の場合、"SmartPhone"が返って来る TextBox1.Text = winCEPlatformName; }
実行結果
上記のコードを実行すると、実行環境のプラットフォームの種別を表示出来る事が確認出来ました(Windows Mobile 6 Professionalのエミュレータで実行した結果)。
GetWinCEPlatformNameメソッドで取得可能な文字列とそれぞれに対応したWindows Mobileのエディションは以下の通りとなります。
- 取得した文字列
- Windows Mobileのエディション
- PocketPC
- Profesional Edition
- PocketPC
- Clasicc Edition
- Smartphone
- Standard Edition