Esempio n. 1
0
        public List <Drive> GetDrives(IIdoit idoit)
        {
            if (hardDisks == null)
            {
                GetStorageDevices();
            }
            IdoitEnumerator fsEnumerator = idoit.Dialog(new Drive().Constant, "filesystem");
            //IdoitEnumerator onDeviceEnumerator = idoit.Dialog(new Drive().Constant, "device");    //Das funktioniert wegen einem Bug in der i-doit API leider nicht...

            List <Drive> result = new List <Drive>();

            foreach (DriveInfo di in DriveInfo.GetDrives())
            {
                if (!di.IsReady)
                {
                    continue;              //Wechseldatenträger und DVDs überspringen.
                }
                Drive child = new Drive();
                child.mount_point  = di.Name;
                child.title        = di.VolumeLabel;
                child.system_drive =
                    Environment.GetEnvironmentVariable("windir")
                    .ToLowerInvariant()
                    .StartsWith(di.RootDirectory.FullName.ToLowerInvariant())
                        ? 1
                        : 0;
                if (fsEnumerator.TestTitle(di.DriveFormat))
                {
                    child.filesystem = fsEnumerator.FindTitleLike(di.DriveFormat);
                }
                else
                {
                    idoit.DialogEdit(child, "filesystem", di.DriveFormat);
                    fsEnumerator     = idoit.Dialog(new Drive().Constant, "filesystem");
                    child.filesystem = fsEnumerator.FindTitleLike(di.DriveFormat);
                }
                child.capacity = (float)((long)(di.TotalSize / 1000 / 1000 / 1000));
                child.serial   = GetVolumeSerialNumber(di.Name);
                child.unit     = Drive.Unit.GB;
                //child.device lässt sich wegen o.g. Bug nicht korrekt setzen...
                result.Add(child);
            }
            return(result);
        }
Esempio n. 2
0
        public List <SoundCard> GetSoundCards(IIdoit idoit)
        {
            IdoitEnumerator  manufacEnum = idoit.Dialog(new SoundCard().Constant, "manufacturer");
            List <SoundCard> result      = new List <SoundCard>();

            try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2",
                                                 "SELECT * FROM Win32_SoundDevice");

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    SoundCard child = new SoundCard();

                    //Wert für Hersteller herausfinden.
                    string manufacQuery = (string)queryObj["Manufacturer"];
                    if (!string.IsNullOrEmpty(manufacQuery))
                    {
                        if (!manufacEnum.TestTitle(manufacQuery))
                        {
                            //Hersteller hinzufügen, falls noch nicht bekannt...
                            idoit.DialogEdit(new SoundCard(), "manufacturer", manufacQuery);
                            manufacEnum = idoit.Dialog(new SoundCard().Constant, "manufacturer");
                        }
                        child.manufacturer = manufacEnum.FindTitleLike(manufacQuery);
                    }
                    child.title       = (string)queryObj["Caption"];
                    child.description = (string)queryObj["Description"];
                    result.Add(child);
                }
            }
            catch (Exception e)
            {
                throw;
            }
            return(result);
        }
Esempio n. 3
0
        public List <Memory> GetMemoryBanks(IIdoit idoit)
        {
            List <Memory> result          = new List <Memory>();
            List <string> knownBankLabels = new List <string>();

            IdoitEnumerator titles      = idoit.Dialog(new Memory().Constant, "title");
            IdoitEnumerator manufactors = idoit.Dialog(new Memory().Constant, "manufacturer");
            IdoitEnumerator type        = idoit.Dialog(new Memory().Constant, "type");
            int             bankNo      = 0;

            try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2",
                                                 "SELECT * FROM Win32_PhysicalMemory");

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    bankNo++;

                    string actualPartNumber = (string)queryObj["PartNumber"];                                       //ältere RAM Bänke geben evtl. null zurück
                    if (!string.IsNullOrEmpty(actualPartNumber))
                    {
                        actualPartNumber = actualPartNumber.Trim();
                    }

                    string actualManufacturer = (string)queryObj["Manufacturer"];                                   //ältere RAM Bänke geben evtl. null zurück
                    if (!string.IsNullOrEmpty(actualManufacturer))
                    {
                        actualManufacturer.Trim();
                    }

                    if (IsRamManufacturerSpecified(actualManufacturer))
                    {
                        //Wenn kein Hersteller definiert, dann anhand der PartNumber den Hersteller herausfinden.
                        if (!string.IsNullOrEmpty(actualPartNumber))
                        {
                            foreach (var kv in Config.ramManufactors)
                            {
                                if (actualPartNumber.StartsWith(kv.Key))
                                {
                                    actualManufacturer = kv.Value;
                                    break;
                                }
                            }
                        }
                    }

                    Memory child = new Memory();
                    child.quantity = 1;
                    string bankLabel = queryObj["BankLabel"].ToString();
                    if (knownBankLabels.Contains(bankLabel))
                    {
                        bankLabel = "Unknown Memory Bank " + bankNo;
                    }
                    else
                    {
                        knownBankLabels.Add(bankLabel);
                    }
                    if (!titles.TestTitle(bankLabel))
                    {
                        idoit.DialogEdit(new Memory(), "title", bankLabel);
                        titles = idoit.Dialog(new Memory().Constant, "title");
                    }
                    child.title = titles.FindTitleLike(bankLabel);

                    if (IsRamManufacturerSpecified(actualManufacturer))
                    {
                        if (!manufactors.TestTitle(actualManufacturer))
                        {
                            //Sollte der Hersteller des RAMs bekannt sein, und er ist weder in u-doit noch in i-doit bekannt, den RAM-Hersteller eintragen:
                            idoit.DialogEdit(new Memory(), "manufacturer", actualManufacturer);
                            manufactors = idoit.Dialog(new Memory().Constant, "manufacturer");
                        }

                        child.manufacturer = manufactors.FindTitleLike(actualManufacturer);
                    }

                    if (!string.IsNullOrEmpty(actualPartNumber))
                    {
                        if (!type.TestTitle(actualPartNumber))
                        {
                            idoit.DialogEdit(new Memory(), "type", actualPartNumber);
                            type = idoit.Dialog(new Memory().Constant, "type");
                        }
                        child.type = type.FindTitleLike(actualPartNumber);
                    }

                    child.capacity    = (float)(Convert.ToInt64(queryObj["Capacity"].ToString()) / 1024 / 1024);
                    child.unit        = Memory.C__CATG__MEMORY_UNIT.C__MEMORY_UNIT__MB;
                    child.description = queryObj["Description"].ToString();
                    result.Add(child);
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }