Gibt es eine Möglichkeit festzustellen, ob wir auf einem Emulator oder einem echten Gerät mit .NET CF-Code arbeiten?.NET kompaktes Framework - Erkennen, ob unter Emulator?
Dank Dominik
Gibt es eine Möglichkeit festzustellen, ob wir auf einem Emulator oder einem echten Gerät mit .NET CF-Code arbeiten?.NET kompaktes Framework - Erkennen, ob unter Emulator?
Dank Dominik
This article sagt Ihnen, wie indirekt. Es zeigt, wie man eine Hilfsmethode IsEmulator
erstellt, die den Trick macht. Sie könnten auch an der follow-up interessiert sein, wenn Sie mit der Plattform-Erkennung im Allgemeinen betroffen sind.
Aus dem Artikel:
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"));
}
}
}
Wenn Sie die OpenNETCF Smart Device Framework verwenden, können Sie die OpenNETCF.WindowsCE.DeviceManagement.OemInfo
Eigenschaft testen, um zu sehen, ob es „Microsoft DeviceEmulator“ gleich. So stelle ich fest, dass ich unter dem Emulator laufe und nicht mit spezifischer Hardware wie einem Barcodeleser interagieren soll.