Existe-t-il un moyen de détecter si nous exécutons un émulateur ou un périphérique réel à partir du code .NET CF?.NET compact framework - détection si sous émulateur?
Merci Dominik
Existe-t-il un moyen de détecter si nous exécutons un émulateur ou un périphérique réel à partir du code .NET CF?.NET compact framework - détection si sous émulateur?
Merci Dominik
This article vous indique comment, indirectement. Il montre comment créer une méthode utilitaire IsEmulator
qui fait l'affaire. Vous pouvez également être intéressé par le follow-up si vous êtes concerné par la détection de plate-forme en général.
de l'article:
using System;
using System.IO;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Runtime.InteropServices;
using System.Text;
namespace PlatformDetection
{
internal partial class PInvoke
{
[DllImport("Coredll.dll", EntryPoint = "SystemParametersInfoW", CharSet = CharSet.Unicode)]
static extern int SystemParametersInfo4Strings(uint uiAction, uint uiParam, StringBuilder pvParam, uint fWinIni);
public enum SystemParametersInfoActions : uint
{
SPI_GETPLATFORMTYPE = 257, // this is used elsewhere for Smartphone/PocketPC detection
SPI_GETOEMINFO = 258,
}
public static string GetOemInfo()
{
StringBuilder oemInfo = new StringBuilder(50);
if (SystemParametersInfo4Strings((uint)SystemParametersInfoActions.SPI_GETOEMINFO,
(uint)oemInfo.Capacity, oemInfo, 0) == 0)
throw new Exception("Error getting OEM info.");
return oemInfo.ToString();
}
}
internal partial class PlatformDetection
{
private const string MicrosoftEmulatorOemValue = "Microsoft DeviceEmulator";
public static bool IsEmulator()
{
return PInvoke.GetOemInfo() == MicrosoftEmulatorOemValue;
}
}
class EmulatorProgram
{
static void Main(string[] args)
{
MessageBox.Show("Emulator: " + (PlatformDetection.IsEmulator() ? "Yes" : "No"));
}
}
}
Si vous utilisez le OpenNETCF Smart Device Framework, vous pouvez tester la propriété OpenNETCF.WindowsCE.DeviceManagement.OemInfo
pour voir si elle est égale à "Microsoft DeviceEmulator". C'est ainsi que je détecte que je cours sous l'émulateur et que je ne devrais pas interagir avec un matériel spécifique comme un lecteur de code à barres.