デバイス プラットフォームの種別を取得する(~2.0)
PocketPC ( Proffesional/Clasicc Edition ) と Smartphone ( Standard Edition ) では一部のコントロールの対応可否に違いがあったり、デバイスのプラットフォームによって処理を分けたい場合などあります。
今回は、デバイスプラットフォームの種別を取得します。.NET Compact Framework 3.5 以降をお使いの方は、より簡単にデバイスプラットフォームの種別を取得する方法がありますので、「デバイス プラットフォームを取得する(3.5~)」をご覧下さい。
以下にサンプルコードを示します。
サンプルコード
' システム全体に関するパラメータのいずれかを取得または設定します。
<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
// システム全体に関するパラメータのいずれかを取得または設定します。
[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;
}
上記のコードを実行すると、テキストボックスにプラットフォームの種別が表示されます。