How to: Get the Device Platform
[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]
In the .NET Compact Framework version 3.5 and later versions, you can use the WinCEPlatform enumeration to determine which device platform, Pocket PC or Smartphone, is currently running your application.
In the .NET Compact Framework 2.0 or earlier, you can return the device platform by using a platform invoke call to native code. The following procedure defines a class and an enumeration of platforms that you can use to determine the device platform.
To get the device platform in the .NET Compact Framework 2.0 and earlier
Add the following class and enumeration to your project.
Public Class PlatformDetector Declare Function SystemParametersInfo Lib "Coredll.dll" _ (ByVal uiAction As System.UInt32, _ ByVal uiParam As System.UInt32, _ ByVal pvParam As StringBuilder, _ ByVal fWinIni As System.UInt32) As Boolean Private Shared SPI_GETPLATFORMTYPE As System.UInt32 = 257 Public Shared Function GetPlatform() As Platform Dim plat As Platform = Platform.Unknown Select Case System.Environment.OSVersion.Platform Case PlatformID.Win32NT plat = Platform.Win32NT Case PlatformID.Win32S plat = Platform.Win32S Case PlatformID.Win32Windows plat = Platform.Win32Windows Case PlatformID.WinCE plat = CheckWinCEPlatform() End Select Return plat End Function Shared Function CheckWinCEPlatform() As Platform Dim plat As Platform = Platform.WindowsCE Dim strbuild As New StringBuilder(200) SystemParametersInfo(SPI_GETPLATFORMTYPE, 200, strbuild, 0) Dim str As String = strbuild.ToString() Select Case str Case "PocketPC" plat = Platform.PocketPC Case "SmartPhone" ' Note that the strbuild parameter from the ' PInvoke returns "SmartPhone" with an ' upper case P. The correct casing is ' "Smartphone" with a lower case p. plat = Platform.Smartphone End Select Return plat End Function End Class Public Enum Platform PocketPC WindowsCE Smartphone Win32NT Win32S Win32Windows Unknown End Enum
Add the following declaration and code for the form's Load event.
Declare Function KernelIoControl Lib "CoreDll.dll" _ (ByVal dwIoControlCode As Int32, _ ByVal lpInBuf As IntPtr, _ ByVal nInBufSize As Int32, _ ByVal lpOutBuf() As Byte, _ ByVal nOutBufSize As Int32, _ ByRef lpBytesReturned As Int32) As Boolean Private Sub DeviceType_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles MyBase.Load Try MessageBox.Show("Platform is " + PlatformDetector.GetPlatform().ToString()) Catch ex As Exception MessageBox.Show(ex.Message.ToString()) End Try End Sub