2010-06-25 10 views

उत्तर

7

This article, आपको बताता है कि परोक्ष रूप से। यह दिखाता है कि उपयोगिता विधि IsEmulator कैसे करें जो चाल करता है। यदि आप सामान्य रूप से प्लेटफार्म पहचान से चिंतित हैं तो आपको follow-up में रुचि भी हो सकती है।

लेख से:

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")); 
     } 
    } 
} 
4

आप OpenNETCF Smart Device Framework का उपयोग कर रहे हैं, तो आप अगर यह "माइक्रोसॉफ्ट DeviceEmulator" बराबर देखने के लिए OpenNETCF.WindowsCE.DeviceManagement.OemInfo संपत्ति परीक्षण कर सकते हैं। इस तरह मैं यह पता लगाता हूं कि मैं एमुलेटर के तहत दौड़ रहा हूं और बारकोड रीडर जैसे विशिष्ट हार्डवेयर से बातचीत नहीं करनी चाहिए।