Comment : obtenir la plate-forme de périphérique
Mise à jour : novembre 2007
Dans le .NET Compact Framework version 3.5 et versions ultérieures, vous pouvez utiliser l'énumération WinCEPlatform pour déterminer la plateforme de périphérique, Pocket PC ou Smartphone, sur laquelle votre application s'exécute actuellement.
Dans le .NET Compact Framework 2.0 ou version précédente, vous pouvez retourner la plateforme de périphérique à l'aide d'un appel de code non managé au code natif. La procédure suivante définit une classe et une énumération des plateformes que vous pouvez utiliser pour déterminer la plateforme de périphérique.
Pour obtenir la plateforme de périphérique dans la versions 2.0 et antérieures du .NET Compact Framework
Ajoutez la classe et l'énumération suivantes à votre projet.
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
public 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 }
Ajoutez la déclaration et le code suivants pour l'événement Load du formulaire.
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()); } }
Compilation du code
Cet exemple nécessite des références aux espaces de noms suivants :
Voir aussi
Tâches
Comment : obtenir l'ID et le nom du périphérique
Concepts
.Rubriques Comment relatives au .NET Compact Framework