¿Hay alguna forma de detectar si estamos ejecutando un emulador o un dispositivo real desde el código CF de .NET?.NET compact framework - ¿detecta si está bajo el emulador?
Gracias Dominik
¿Hay alguna forma de detectar si estamos ejecutando un emulador o un dispositivo real desde el código CF de .NET?.NET compact framework - ¿detecta si está bajo el emulador?
Gracias Dominik
This article le indica cómo, de manera indirecta. Muestra cómo crear un método de utilidad IsEmulator
que soluciona el problema. También le puede interesar el follow-up si le preocupa la detección de plataforma en general.
Desde el artículo:
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 está utilizando el OpenNETCF Smart Device Framework, puede probar la propiedad OpenNETCF.WindowsCE.DeviceManagement.OemInfo
para ver si es igual a "Microsoft DeviceEmulator". Así es como detecto que estoy corriendo bajo el emulador y no debería interactuar con hardware específico como un lector de código de barras.