static int Main(string[] args) { if (args.Length > 0) { PrintAbout(); } ChassisTypes a = GetCurrentChassisType(); if (a == ChassisTypes.Other || a == ChassisTypes.Unknown || a == ChassisTypes.SpaceSaving || a == ChassisTypes.LunchBox || a == ChassisTypes.MainSystemChassis || a == ChassisTypes.ExpansionChassis || a == ChassisTypes.SubChassis || a == ChassisTypes.BusExpansionChassis || a == ChassisTypes.PeripheralChassis || a == ChassisTypes.SealedCasePC) { return(0); //Other } if (a == ChassisTypes.Desktop || a == ChassisTypes.LowProfileDesktop || a == ChassisTypes.PizzaBox || a == ChassisTypes.MiniTower || a == ChassisTypes.Tower || a == ChassisTypes.AllInOne || a == ChassisTypes.StorageChassis || a == ChassisTypes.RackMountChassis) { return(1); //Desktop } if (a == ChassisTypes.Portable || a == ChassisTypes.Laptop || a == ChassisTypes.Notebook || a == ChassisTypes.DockingStation || a == ChassisTypes.SubNotebook) { return(2); //Laptop } if (a == ChassisTypes.Handheld) { return(3); //Tablet } return(0); //Error }
public bool IsLaptop() { ManagementClass systemEnclosures = new ManagementClass("Win32_SystemEnclosure"); foreach (ManagementObject obj in systemEnclosures.GetInstances()) { foreach (int i in (UInt16[])(obj["ChassisTypes"])) { ChassisTypes actualType = (ChassisTypes)i; Console.WriteLine("Detected Chassis type: {0}", actualType); switch (actualType) { case ChassisTypes.Desktop: case ChassisTypes.MiniTower: return(false); case ChassisTypes.Notebook: return(true); default: Console.WriteLine("Don't know what a {0} is - assuming it's a desktop computer.", (ChassisTypes)i); break; } } } return(false); }
public static ChassisTypes GetChassisType() { ChassisTypes cType = ChassisTypes.Unknown; ManagementClass systemEnclosures = new ManagementClass("Win32_SystemEnclosure"); foreach (ManagementObject obj in systemEnclosures.GetInstances()) { foreach (int i in (UInt16[])(obj["ChassisTypes"])) { if (i > 0 && i < 25) { cType = (ChassisTypes)i; } } } if (cType == ChassisTypes.Other) { using (var searcher = new System.Management.ManagementObjectSearcher("Select * from Win32_ComputerSystem")) { using (var items = searcher.Get()) { foreach (var item in items) { string manufacturer = item["Manufacturer"].ToString().ToLower(); if ((item["Model"].ToString().ToUpperInvariant().Contains("VIRTUAL")) || manufacturer.Contains("vmware") || item["Model"].ToString() == "VirtualBox") { cType = ChassisTypes.VirutalBox; } } } } } return(cType); }
public static void RetrieveInfo() { #if PLATFORM_ANDROID DisplayMetrics metrics = new DisplayMetrics(); Game.Activity.WindowManager.DefaultDisplay.GetMetrics(metrics); ScreenWidth = metrics.WidthPixels; ScreenHeight = metrics.HeightPixels; DisplayRealWidth = 2.54f * deviceScreenWidth / metrics.Xdpi; DisplayRealHeight = 2.54f * deviceScreenHeight / metrics.Ydpi; int shortSizeDp = (Math.Min(deviceScreenWidth, deviceScreenHeight) * (int)(DisplayMetricsDensity.Default)) / (int)metrics.DensityDpi; #if PLATFORM_OUYA OS = DeviceOS.Ouya; Form = DeviceForm.Console; #else OS = DeviceOS.Android; Form = shortSizeDp < 720 ? DeviceForm.Phone : DeviceForm.Tablet; // Taken from Android SystemUI (status bar) layout policy for deciding when to use Tablet UI #endif OSVersion = Build.VERSION.Release; Manufacturer = Build.Manufacturer; Identifier = Build.Model; Model = Build.Device; ModelVersion = Build.VERSION.Incremental; PPI = (metrics.Xdpi + metrics.Ydpi) / 2f; #elif PLATFORM_BLACKBERRY OS = DeviceOS.BlackBerry; OSVersion = "Unknown"; Manufacturer = "BlackBerry"; Identifier = "Unspecified"; Model = "UnknownBlackBerryDevice"; Form = DeviceForm.Unknown; ModelVersion = "UnknownBlackBerryVersion"; PPI = 96f; #elif PLATFORM_BSD OS = DeviceOS.BSD; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownBSDDevice"; Form = DeviceForm.Computer; ModelVersion = "UnknownBSDVersion"; PPI = 96f; #elif PLATFORM_FLASH OS = DeviceOS.Flash; OSVersion = "Unknown"; Manufacturer = "Adobe"; Identifier = "Unspecified"; Model = "UnknownFlashPlayer"; Form = DeviceForm.Web; ModelVersion = "UnknownFlashVersion"; PPI = 96f; #elif PLATFORM_GAMESTICK OS = DeviceOS.GameStick; OSVersion = "Unknown"; Manufacturer = "Playjam"; Identifier = "Unspecified"; Model = "UnknownGameStickDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownGameStickVersion"; PPI = 96f; #elif PLATFORM_GAIKAI OS = DeviceOS.Gaikai; OSVersion = "Unknown"; Manufacturer = "Sony"; Identifier = "Unspecified"; Model = "UnknownGaikaiDevice"; Form = DeviceForm.Streaming; ModelVersion = "UnknownGaikaiVersion"; PPI = 96f; #elif PLATFORM_IOS string hardwareStr = "Unspecified"; IntPtr pLen = Marshal.AllocHGlobal(sizeof(int)); sysctlbyname(DeviceHardware.HardwareProperty, IntPtr.Zero, pLen, IntPtr.Zero, 0); int length = Marshal.ReadInt32(pLen); if (length == 0) { Marshal.FreeHGlobal(pLen); } else { IntPtr pStr = Marshal.AllocHGlobal(length); sysctlbyname(DeviceHardware.HardwareProperty, pStr, pLen, IntPtr.Zero, 0); hardwareStr = Marshal.PtrToStringAnsi(pStr); Marshal.FreeHGlobal(pLen); Marshal.FreeHGlobal(pStr); } string hardwareStrLC = hardwareStr.ToLower(); float scale = 1f; try { scale = UIScreen.MainScreen.Scale; } catch (Exception) { scale = 1f; } OS = DeviceOS.iOS; OSVersion = UIDevice.CurrentDevice.SystemVersion; Manufacturer = "Apple"; Identifier = hardwareStr; if (hardwareStrLC.StartsWith("iphone")) { Model = "iPhone"; Form = DeviceForm.Phone; } else if (hardwareStrLC == "ipad2,5" || hardwareStrLC == "ipad2,6" || hardwareStrLC == "ipad2,7") { Model = "iPad Mini"; Form = DeviceForm.Tablet; } else if (hardwareStrLC.StartsWith("ipad")) { Model = "iPad"; Form = DeviceForm.Tablet; } else if (hardwareStrLC.StartsWith("ipod")) { Model = "iPod Touch"; Form = DeviceForm.Pod; } else if (hardwareStrLC.StartsWith("appletv")) { Model = "Apple TV"; Form = DeviceForm.Console; } else if (hardwareStrLC == "i386" || hardwareStrLC == "x86_64") { if (UIDevice.CurrentDevice.Model.ToLower().Contains("iphone")) { Model = "iPhoneSimulator"; Form = DeviceForm.Phone; } else { Model = "iPadSimulator"; Form = DeviceForm.Tablet; } } else { Model = "UnknowniOSDevice"; Form = DeviceForm.Unknown; } if (hardwareStrLC == "iphone1,1") { ModelVersion = "2G"; } else if (hardwareStrLC == "iphone1,2") { ModelVersion = "3G"; } else if (hardwareStrLC == "iphone2,1") { ModelVersion = "3GS"; } else if (hardwareStrLC == "iphone3,1") { ModelVersion = "4"; } else if (hardwareStrLC == "iphone3,2") { ModelVersion = "4 Rev.A"; } else if (hardwareStrLC == "iphone3,3") { ModelVersion = "4 CDMA"; } else if (hardwareStrLC == "iphone4,1") { ModelVersion = "4S"; } else if (hardwareStrLC == "iphone5,1") { ModelVersion = "5 GSM"; } else if (hardwareStrLC == "iphone5,2") { ModelVersion = "5 CDMA+GSM"; } else if (hardwareStrLC == "ipad1,1") { ModelVersion = "1 WiFi"; } else if (hardwareStrLC == "ipad1,2") { ModelVersion = "1 3G"; } else if (hardwareStrLC == "ipad2,1") { ModelVersion = "2 WiFi"; } else if (hardwareStrLC == "ipad2,2") { ModelVersion = "2 GSM"; } else if (hardwareStrLC == "ipad2,3") { ModelVersion = "2 CDMA"; } else if (hardwareStrLC == "ipad2,4") { ModelVersion = "2 WiFi Rev.A"; } else if (hardwareStrLC == "ipad2,5") { ModelVersion = "1 WiFi"; } else if (hardwareStrLC == "ipad2,6") { ModelVersion = "1 GSM"; } else if (hardwareStrLC == "ipad2,7") { ModelVersion = "1 CDMA+GSM"; } else if (hardwareStrLC == "ipad3,1") { ModelVersion = "3 WiFi"; } else if (hardwareStrLC == "ipad3,2") { ModelVersion = "3 CDMA"; } else if (hardwareStrLC == "ipad3,3") { ModelVersion = "3 GSM"; } else if (hardwareStrLC == "ipad3,4") { ModelVersion = "4 WiFi"; } else if (hardwareStrLC == "ipad3,5") { ModelVersion = "4 GSM"; } else if (hardwareStrLC == "ipad3,6") { ModelVersion = "4 CDMA+GSM"; } else if (hardwareStrLC == "ipod1,1") { ModelVersion = "1G"; } else if (hardwareStrLC == "ipod2,1") { ModelVersion = "2G"; } else if (hardwareStrLC == "ipod3,1") { ModelVersion = "3G"; } else if (hardwareStrLC == "ipod4,1") { ModelVersion = "4G"; } else if (hardwareStrLC == "ipod5,1") { ModelVersion = "5G"; } else if (hardwareStrLC == "appletv2,1") { ModelVersion = "2G"; } else if (hardwareStrLC == "appletv3,1") { ModelVersion = "3G"; } else if (hardwareStrLC == "appletv3,2") { ModelVersion = "3G Rev.A"; } else if (hardwareStrLC == "i386" || hardwareStr == "x86_64") { if (UIDevice.CurrentDevice.Model.ToLower().Contains("iphone")) { if (scale > 1.5f) { ModelVersion = "iPhoneRetinaSimulator"; } else { ModelVersion = "iPhoneSimulator"; } } else { if (scale > 1.5f) { ModelVersion = "iPadRetinaSimulator"; } else { ModelVersion = "iPadSimulator"; } } } else { ModelVersion = "UnknowniOSVersion"; } if (deviceForm == DeviceForm.Phone || deviceForm == DeviceForm.Pod || deviceModel == "iPad Mini") { PPI = 163f * scale; } else if (deviceForm == DeviceForm.Tablet) { PPI = 132f * scale; } else if (deviceForm == DeviceForm.Console) { PPI = 72f; } else { PPI = 160f * scale; } ScreenWidth = (int)UIScreen.MainScreen.CurrentMode.Size.Width; ScreenHeight = (int)UIScreen.MainScreen.CurrentMode.Size.Height; #elif PLATFORM_LINUX OS = DeviceOS.Linux; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownLinuxDevice"; Form = DeviceForm.Computer; ModelVersion = "UnknownLinuxVersion"; PPI = 96f; #elif PLATFORM_MACOS OS = DeviceOS.MacOSX; OSVersion = "Unknown"; Manufacturer = "Apple"; Identifier = "Unspecified"; Model = "UnknownMacOSXDevice"; Form = DeviceForm.Computer; ModelVersion = "UnknownMacOSXVersion"; PPI = 96f; #elif PLATFORM_ONLIVE OS = DeviceOS.OnLive; OSVersion = "Unknown"; Manufacturer = "OnLive"; Identifier = "Unspecified"; Model = "UnknownOnLiveDevice"; Form = DeviceForm.Streaming; ModelVersion = "UnknownOnLiveVersion"; PPI = 96f; #elif PLATFORM_PS3 OS = DeviceOS.PlayStation3; OSVersion = "Unknown"; Manufacturer = "Sony"; Identifier = "Unspecified"; Model = "UnknownPlayStation3Device"; Form = DeviceForm.Console; ModelVersion = "UnknownPlayStation3Version"; PPI = 96f; #elif PLATFORM_PS4 OS = DeviceOS.PlayStation4; OSVersion = "Unknown"; Manufacturer = "Sony"; Identifier = "Unspecified"; Model = "UnknownPlayStation4Device"; Form = DeviceForm.Console; ModelVersion = "UnknownPlayStation4Version"; PPI = 96f; #elif PLATFORM_PSMOBILE OS = DeviceOS.PSMobile; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownPSMobileDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownPSMobileVersion"; PPI = 96f; #elif PLATFORM_SHIELD OS = DeviceOS.Shield; OSVersion = "Unknown"; Manufacturer = "NVidia"; Identifier = "Unspecified"; Model = "UnknownShieldDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownShieldVersion"; PPI = 96f; #elif PLATFORM_ILVERLIGHT OS = DeviceOS.SilverLight; OSVersion = "Unknown"; Manufacturer = "Microsoft"; Identifier = "Unspecified"; Model = "UnknownSilverLightPlayer"; Form = DeviceForm.Web; ModelVersion = "UnknownSilverLightVersion"; PPI = 96f; #elif PLATFORM_STEAMBOX OS = DeviceOS.SteamBox; OSVersion = "Unknown"; Manufacturer = "Valve"; Identifier = "Unspecified"; Model = "UnknownSteamBoxDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownSteamBoxVersion"; PPI = 96f; #elif PLATFORM_TIZEN OS = DeviceOS.Tizen; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownTizenDevice"; Form = DeviceForm.Unknown; ModelVersion = "UnknownTizenVersion"; PPI = 96f; #elif PLATFORM_WII OS = DeviceOS.Wii; OSVersion = "Unknown"; Manufacturer = "Nintendo"; Identifier = "Unspecified"; Model = "UnknownWiiDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownWiiVersion"; PPI = 96f; #elif PLATFORM_WIIU OS = DeviceOS.WiiU; OSVersion = "Unknown"; Manufacturer = "Nintendo"; Identifier = "Unspecified"; Model = "UnknownWiiUDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownWiiUVersion"; PPI = 96f; #elif PLATFORM_WINDOWS8 OS = DeviceOS.Windows8; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownWindows8Device"; Form = DeviceForm.Computer; ModelVersion = "UnknownWindows8Version"; PPI = 96f; #elif PLATFORM_WINDOWS_RT OS = DeviceOS.WindowsRT; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownWindowsRTDevice"; Form = DeviceForm.Tablet; ModelVersion = "UnknownWindowsRTVersion"; PPI = 96f; #elif PLATFORM_WINDOWS string arch = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"); // int arch = ((String.IsNullOrEmpty(pa) || String.Compare(pa, 0, "x86", 0, 3, true) == 0) ? 32 : 64); OperatingSystem os = Environment.OSVersion; Version vs = os.Version; string operatingSystem = ""; if (os.Platform == PlatformID.Win32Windows) { switch (vs.Minor) { case 0: operatingSystem = "95"; break; case 10: if (vs.Revision.ToString() == "2222A") { operatingSystem = "98SE"; } else { operatingSystem = "98"; } break; case 90: operatingSystem = "Me"; break; default: break; } } else if (os.Platform == PlatformID.Win32NT) { switch (vs.Major) { case 3: operatingSystem = "NT 3.51"; break; case 4: operatingSystem = "NT 4.0"; break; case 5: if (vs.Minor == 0) { operatingSystem = "2000"; } else { operatingSystem = "XP"; } break; case 6: if (vs.Minor == 0) { operatingSystem = "Vista"; } else if (vs.Minor == 1) { operatingSystem = "7"; } else if (vs.Minor == 2) { operatingSystem = "8"; } break; default: operatingSystem = "Unknown Version"; break; } } ChassisTypes chassis = ChassisTypes.Unknown; ManagementClass mc; try { mc = new ManagementClass("Win32_SystemEnclosure"); foreach (ManagementObject obj in mc.GetInstances()) { foreach (int i in (UInt16[])(obj["ChassisTypes"])) { if (i > 0 && i < 25) { chassis = (ChassisTypes)i; } } } } catch { } Manufacturer = "Unknown"; Model = "UnknownModel"; ModelVersion = "UnknownModelVersion"; try { mc = new ManagementClass("Win32_ComputerSystem"); foreach (ManagementObject mo in mc.GetInstances()) { object val = mo.GetPropertyValue("Manufacturer"); if (val != null) { Manufacturer = val.ToString(); } val = mo.GetPropertyValue("Model"); if (val != null) { Model = val.ToString(); int space = deviceModel.LastIndexOf(' '); if (space > 0) { ModelVersion = deviceModel.Substring(space + 1); Model = deviceModel.Substring(0, space); } else { ModelVersion = deviceModel; } } } } catch { } OS = DeviceOS.Windows; OSVersion = operatingSystem; Identifier = System.Environment.OSVersion.VersionString + " (" + arch + ")"; if (chassis == ChassisTypes.AllInOne || chassis == ChassisTypes.Desktop || chassis == ChassisTypes.LowProfileDesktop || chassis == ChassisTypes.LunchBox || chassis == ChassisTypes.MiniTower || chassis == ChassisTypes.PizzaBox || chassis == ChassisTypes.SealedCasePC || chassis == ChassisTypes.SpaceSaving || chassis == ChassisTypes.Tower) { Form = DeviceForm.Desktop; } else if (chassis == ChassisTypes.DockingStation || chassis == ChassisTypes.Laptop || chassis == ChassisTypes.Notebook || chassis == ChassisTypes.Portable || chassis == ChassisTypes.SubNotebook) { Form = DeviceForm.Laptop; } else if (chassis == ChassisTypes.Handheld) { Form = DeviceForm.Tablet; } else { Form = DeviceForm.Computer; } System.Drawing.Graphics g = System.Drawing.Graphics.FromHwnd(IntPtr.Zero); IntPtr desktop = g.GetHdc(); ScreenWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width; ScreenHeight = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height; int Xdpi = GetDeviceCaps(desktop, (int)DeviceCap.LOGPIXELSX); int Ydpi = GetDeviceCaps(desktop, (int)DeviceCap.LOGPIXELSY); PPI = ((float)(Xdpi + Ydpi)) / 2f; #elif WINDOWS_PHONE_8 OS = DeviceOS.WindowsPhone8; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownWindowsPhone8Device"; Form = DeviceForm.Phone; ModelVersion = "UnknownWindowsPhone8Version"; PPI = 96f; #elif WINDOWS_PHONE OS = DeviceOS.WindowsPhone; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownWindowsPhoneDevice"; Form = DeviceForm.Phone; ModelVersion = "UnknownWindowsPhoneVersion"; PPI = 96f; #elif PLATFORM_XBOX OS = DeviceOS.XBox360; OSVersion = "Unknown"; Manufacturer = "Microsoft"; Identifier = "Unspecified"; Model = "UnknownXBox360Device"; Form = DeviceForm.Console; ModelVersion = "UnknownXBox360Version"; PPI = 96f; #elif PLATFORM_XBOXNG OS = DeviceOS.XBoxNG; OSVersion = "Unknown"; Manufacturer = "Microsoft"; Identifier = "Unspecified"; Model = "UnknownXBoxNGDevice"; Form = DeviceForm.Console; ModelVersion = "UnknownXBoxNGVersion"; PPI = 96f; #else OS = DeviceOS.Unknown; OSVersion = "Unknown"; Manufacturer = "Unknown"; Identifier = "Unspecified"; Model = "UnknownDevice"; Form = DeviceForm.Unknown; ModelVersion = "UnknownVersion"; PPI = 96f; #endif PPcm = devicePPI / 2.54f; if (deviceDisplayRealWidth == 0f) { DisplayRealWidth = deviceScreenWidth / devicePPcm; DisplayRealHeight = deviceScreenHeight / devicePPcm; } DisplayDiagonal = (float)Math.Sqrt(deviceDisplayRealWidth * deviceDisplayRealWidth + deviceDisplayRealHeight * deviceDisplayRealHeight); deviceInfoInitialized = true; }