Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
En .NET Compact Framework versión 3.5 y versiones posteriores, puede utilizar la enumeración WinCEPlatform para determinar la plataforma del dispositivo, Pocket PC o Smartphone que está ejecutando la aplicación.
En .NET Compact Framework 2.0 o versiones anterior, puede conocer la plataforma del dispositivo realizando una llamada de invocación de plataforma al código nativo. El procedimiento siguiente define una clase y una enumeración de plataformas que puede utilizar para determinar la del dispositivo.
Para obtener la plataforma del dispositivo en .NET Compact Framework 2.0 y versiones anteriores
Agregue la clase y la enumeración siguientes al proyecto.
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 Enumpublic class PlatformDetector { [DllImport("coredll.dll")] private static extern bool SystemParametersInfo(uint uiAction, uint uiParam, StringBuilder pvParam, uint fWinIni); private static uint SPI_GETPLATFORMTYPE = 257; public static Platform GetPlatform() { Platform plat = Platform.Unknown; switch (System.Environment.OSVersion.Platform) { case PlatformID.Win32NT: plat = Platform.Win32NT; break; case PlatformID.Win32S: plat = Platform.Win32S; break; case PlatformID.Win32Windows: plat = Platform.Win32Windows; break; case PlatformID.WinCE: plat = CheckWinCEPlatform(); break; } return plat; } static Platform CheckWinCEPlatform() { Platform plat = Platform.WindowsCE; StringBuilder strbuild = new StringBuilder(200); SystemParametersInfo(SPI_GETPLATFORMTYPE, 200, strbuild, 0); string str = strbuild.ToString(); switch (str) { case "PocketPC": plat = Platform.PocketPC; break; 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; break; } return plat; } } public enum Platform { PocketPC, WindowsCE, Smartphone, Win32NT, Win32S, Win32Windows, Unknown }Agregue la declaración y el código siguientes para el evento Load del formulario.
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[DllImport("coredll.dll", SetLastError = true)] private static extern bool KernelIoControl(Int32 dwIoControlCode, IntPtr lpInBuf, Int32 nInBufSize, byte[] lpOutBuf, Int32 nOutBufSize, ref Int32 lpBytesReturned); private void DeviceType_Load(object sender, System.EventArgs e) { try { MessageBox.Show("Platform is " + PlatformDetector.GetPlatform()); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } }
Compilar el código
Para este ejemplo se requieren referencias a los siguientes espacios de nombres:
Vea también
Tareas
Cómo: Obtener el id. y el nombre del dispositivo
Conceptos
.Temas "Cómo..." de .NET Compact Framework