Amesam

WMI Hardwares

5 posts in this topic

#1 ·  Posted (edited)

Hi,

I present to you an example of research material and system with the help of Script-o-matic by exploiting the objects selected.

Some details of the Win32 classes may be interesting to develop.
in this example are worked:
Win32_OperatingSystem
Win32_BIOS
Win32_BaseBoard
Win32_Processor
Win32_PhysicalMemory
Win32_VideoController


for example with the classes Win32_BIOS Script-o-matic returns for BiosCharacteristics:
BiosCharacteristics:7

2016-05-09_224131.jpg.e22249e217f30eec57

With WMI Hardwares.au3 for my PC and with some objects selected

UDF in french and English

2016-05-09_180554.png.ebaf9a92affae5756b

2016-05-09_230009.jpg.859e74f653811c1719
 

WMI Hardwares.au3

 

#cs ----------------------------------------------------------------------------
    AutoIt Version: 3.3.14.2
    Author:         Amesam
    Script Function: WMI Hardwares Request
    Purpose: Get informations from the Hardwares
    Note: Every Function returns a MsgBox

    client pris en charge minimum ;==> Windows Vista
    serveur minimale prise en charge ;==> Windows Server 2008
    namespace ;==> Root \ CIMV2
    MOF ;==> CIMWin32.mof
    DLL ;==> Cimwin32.dll

    ;==> Support AutoIt ScriptOMatic

    _WinClaasOperatingSystem()
    _OperatingSystem()
    _FreeMem()

    _WinClassesBios()
    _BIOS()
    _SMBIOSP()
    _BIOS_SoftwareElementState()
    _BIOSCharacteristics()

    _WinClassesBaseBoard()
    _BaseBoard()
    _HostingBoard()
    _HotSwappable()
    _Removable()
    _Replaceable()

    _WinClassesProcessor()
    _Processor()
    _TypeProc()
    _VirtualFirWareProc()
    _VMVirtualProcess()
    _StatuInfoProc()

    _PhysicalMemory()
    _GETDOSOUTPUT($COMMAND)

    _WinClassesVideoController()
    _VideoController()
    WMIDateStringToDate($dtmDate)
    _VideoArchitecture()
    _AcceleratorCapabilities()
    _Availability()
    _VideoMemoryType()
    _ConfigVideoUser()
    _ConfigManagerErrorCode()

#ce ----------------------------------------------------------------------------
AutoItSetOption("MustDeclareVars", 1)
Global $Fabr, $SortieWMI_OperatingSystem, $NumberOfLicensedUsers, $NumberOfProcesses, $NumberOfUsers, $Produit, $Caption, $SWMI, $SortieWMIRF, $SortieWMI_Bios, $Statut, $FreePhysicalMemory, $FreeSpaceInPagingFiles, $FreeVirtualMemory
Global $Bios, $Bios_LangageEdit, $Bios_NumSerie, $Bios_Statut, $Bios_Caracteristique, $Bios_OutSWMI, $Bios_OutOBJ, $FPMem, $ResutFreePhyMem, $FSpacePF, $ResultFreeSpacePF, $FreeVirtualMem, $ResultFreeVirtualMem
Global $Bios_SMBIOSDispo, $SMBIOS_VSysMesure, $SMBIOS_NDispo, $Bios_ELIDepl, $Bios_ELIInst, $Bios_ELIExectable, $Bios_ELIExecution, $SortieWMI_Video
Global $OutputBios_0, $OutputBios_1, $OutputBios_2, $OutputBios_3, $OutputBios_4, $OutputBios_5, $OutputBios_6, $OutputBios_7, $OutputBios_8, $OutputBios_9, $OutputBios_10, $OutputBios_11, $OutputBios_12, $OutputBios_13, $OutputBios_14
Global $OutputBios_15, $OutputBios_16, $OutputBios_17, $OutputBios_18, $OutputBios_19, $OutputBios_20, $OutputBios_21, $OutputBios_22, $OutputBios_23, $OutputBios_24, $OutputBios_25, $OutputBios_26, $OutputBios_27, $OutputBios_28
Global $OutputBios_29, $OutputBios_30, $OutputBios_31, $OutputBios_32, $OutputBios_33, $OutputBios_34, $OutputBios_35, $OutputBios_36, $OutputBios_37, $OutputBios_38, $OutputBios_39, $OutputBios_40_47, $OutputBios_48_63
Global $BBoard_SWMI, $SortieWMI_BaseBoard, $VersBoard, $HostingBoard_true, $HostingBoard_false, $HotSwappable_true, $HotSwappable_false, $Removable_true, $Removable_false, $Replaceable_true, $Replaceable_false
Global $Name, $NamePorcess, $DWitch_Process, $NbCoreProcess, $NbCorePermis, $NbCoreLogique, $IDProcess, $TypeProcess, $OutputProc_1, $OutputProc_2, $OutputProc_3, $OutputProc_4, $OutputProc_5, $OutputProc_6
Global $ProcVirtuel, $ProcVirtuelNot, $WMProcess, $SortieWMI_Proc, $WMProcessInfo, $Autres, $Autre, $Inconnu, $Enabled, $Disabled, $Sansobjet, $ConfigOption, $Speed
Global $CMEC0, $CMEC1, $CMEC2, $CMEC3, $CMEC4, $CMEC5, $CMEC6, $CMEC7, $CMEC8, $CMEC9, $CMEC10, $CMEC11, $CMEC12, $CMEC13, $CMEC14, $CMEC15, $CMEC16, $CMEC17, $CMEC18, $CMEC19, $CMEC20, $CMEC21, $CMEC22, $CMEC23, $CMEC24, $CMEC25, $CMEC26, $CMEC27, $CMEC28, $CMEC29, $CMEC30, $CMEC31
Global $Accelerateur3D, $AccelerateurGraph, $ArchVideo, $Availability3, $Availability4, $Availability5, $Availability6, $Availability7, $Availability8, $Availability9, $Availability10, $Availability11, $Availability12, $Availability13, $Availability14, $Availability15, $Availability16, $Availability17, $Availability18, $Availability19, $Availability20, $Availability21
Global $SortieWMI_PhysicalMemory, $VideoMemoryType, $ControlVideo, $Capacity, $CMECWIN32, $ConfigUserVideo, $CurrentBitsPerPixel, $CurrentRefreshRate, $DeviceID, $DispoVideoControl, $DriverInstall, $Used, $False, $True, $FileINF, $Free, $MemVideo, $NumSerie, $Proprio, $Reference
Global $objWMIService = ""
Global $colItems = ""
Global $strComputer = "localhost"
Global $OutputTitle = ""
Global $Output = ""
Global $SLANGUE = ""
$OutputTitle &= "Computer: " & $strComputer & @CRLF
$OutputTitle &= "==========================================" & @CRLF

Select
    Case StringInStr("040c,080c,0c0c,100c,140c,180c", @OSLang) ; http://www.autoitscript.fr/autoit3/docs/appendix/OSLangCodes.htm
        $SLANGUE = "Francais"
    Case Else
        $SLANGUE = "Anglais"
EndSelect

Select
    Case $SLANGUE = "Francais"
        $Accelerateur3D = "Accélérateur 3D (3)"
        $AccelerateurGraph = "Accélérateur graphique (2)"
        $ArchVideo = "Type d'architecture vidéo : "
        $Autre = "Autre : "
        $Autres = "Statut Info : Autres (1)"
        $Availability10 = "Dégradé (10)"
        $Availability11 = "Non installé (11)"
        $Availability12 = "Erreur d'installation (12)"
        $Availability13 = "Économie d'énergie - Inconnu (13)"
        $Availability14 = "Économie d'énergie - Mode faible consommation (14)"
        $Availability15 = "Économie d'énergie - Veille (15)"
        $Availability16 = "Cycle d'alimentation (16)"
        $Availability17 = "Économie d'énergie - Avertissement (17)"
        $Availability18 = "Le dispositif est mis en pause (18)"
        $Availability19 = "Le dispositif est pas prêt (19)"
        $Availability20 = "Non configuré (20)"
        $Availability21 = "Suspendu (21)"
        $Availability3 = "Exécution / Full Power (3)"
        $Availability4 = "Avertissement (4)"
        $Availability5 = "Dans l'essai (5)"
        $Availability6 = "Sans objet (6)"
        $Availability7 = "Hors tension (7)"
        $Availability8 = "Hors ligne(8)"
        $Availability9 = "Hors service (9)"
        $BBoard_SWMI = " Sortie WMI pour la classe Win32_BaseBoard "
        $Bios = "BIOS : "
        $Bios_Caracteristique = "Caractéristiques du BIOS : "
        $Bios_ELIDepl = "État du logiciel d'installation : Déployable (0)"
        $Bios_ELIExectable = "État du logiciel d'installation : Executable (2)"
        $Bios_ELIExecution = "État du logiciel d'installation : Démarré (3)"
        $Bios_ELIInst = "État du logiciel d'installation : Installable (1)"
        $Bios_LangageEdit = "Langage Édition : "
        $Bios_NumSerie = "Numéro de série : "
        $Bios_OutOBJ = "Aucun objets WMI trouvés pour la Classe :" & "Win32_BIOS"
        $Bios_OutSWMI = "Aucune sortie WMI pour cette classe"
        $Bios_SMBIOSDispo = "SMBIOS : Disponible "
        $Capacity = "Capacité : "
        $Caption = "Légende : "
        $CMEC0 = "Cet appareil fonctionne correctement. (0) "
        $CMEC1 = "Ce dispositif est pas configuré correctement. (1) "
        $CMEC10 = "Ce dispositif ne peut pas démarrer. (10) "
        $CMEC11 = "Ce dispositif a échoué. (11) "
        $CMEC12 = "Ce dispositif ne peut pas trouver suffisamment de ressources libres qu'il peut utiliser. (12) "
        $CMEC13 = "Windows ne peut pas vérifier les ressources de ce dispositif. (13) "
        $CMEC14 = "Cet appareil peut ne pas fonctionner correctement jusqu'à ce que vous redémarrez votre ordinateur. (14) "
        $CMEC15 = "Ce dispositif ne fonctionne pas correctement car il y a probablement un problème ré-énumération. (15) "
        $CMEC16 = "Windows ne peut pas identifier toutes les ressources utilisées par ce périphérique. (16) "
        $CMEC17 = "Ce dispositif demande un type de ressource inconnu. (17) "
        $CMEC18 = "Réinstaller les pilotes de ce périphérique. (18) "
        $CMEC19 = "Défaut d' utiliser le chargeur VxD. (19) "
        $CMEC2 = "Windows ne peut pas charger le pilote de ce périphérique. (2) "
        $CMEC20 = "Votre Registre est peut - être corrompu. (20) "
        $CMEC21 = "Défaillance du système: Essayez de changer le pilote de ce périphérique. Si cela ne fonctionne pas, consultez la documentation de votre matériel. Windows supprime ce périphérique. (21) "
        $CMEC22 = "Ce périphérique est désactivé. (22) "
        $CMEC23 = "Défaillance du système: Essayez de changer le pilote de ce périphérique. Si cela ne fonctionne pas, consultez la documentation de votre matériel. (23)"
        $CMEC24 = "Ce dispositif est pas présent, ne fonctionne pas correctement, ou ne possède pas tous ses pilotes installés. (24) "
        $CMEC25 = "Windows est toujours en place ce dispositif. (25) "
        $CMEC26 = "Windows est toujours en place ce dispositif. (26) "
        $CMEC27 = "Ce dispositif n'a pas la configuration de journal valide. (27) "
        $CMEC28 = "Les pilotes de ce périphérique ne sont pas installés. (28) "
        $CMEC29 = "Ce périphérique est désactivé car le firmware de l'appareil ne lui donne pas les ressources nécessaires. (29) "
        $CMEC3 = "Le pilote de ce périphérique peut être endommagé ou votre système peut être à court de mémoire ou d' autres ressources. (3) "
        $CMEC30 = "Cet appareil utilise une demande d' interruption (IRQ) ressources qu'un autre périphérique utilise. (30) "
        $CMEC31 = "Ce dispositif ne fonctionne pas correctement car Windows ne peut pas charger les pilotes requis pour ce périphérique. (31) "
        $CMEC4 = "Ce dispositif ne fonctionne pas correctement. L' un de ses pilotes ou votre registre peut - être endommagé. (4) "
        $CMEC5 = "Le pilote de ce périphérique a besoin d' une ressource que Windows ne peut pas gérer. (5) "
        $CMEC6 = "La configuration de démarrage de ce périphérique est en conflit avec d' autres appareils. (6) "
        $CMEC7 = "Vous ne pouvez pas filtrer. (7) "
        $CMEC8 = "Le chargeur de pilote pour le périphérique est manquant. (8) "
        $CMEC9 = "Ce dispositif ne fonctionne pas correctement parce que le firmware de contrôle signale les ressources de l'appareil de manière incorrecte. (9) "
        $CMECWIN32 = "Win32 Configuration Manager code d'erreur : "
        $ConfigOption = "Options de configuration"
        $ConfigUserVideo = "Configuration définie par l' utilisateur : "
        $ControlVideo = "Contrôleur vidéo et graphiques : "
        $CurrentBitsPerPixel = "Nombre de bits utilisés pour afficher chaque pixel : "
        $CurrentRefreshRate = "Fréquence à laquelle le contrôleur vidéo rafraîchit l'image : "
        $DeviceID = "Référence de l'appareil : "
        $Disabled = "Statut Info : Désactivé (4)"
        $DispoVideoControl = "Disponibilité et état de l'appareil : "
        $DriverInstall = "Nom du pilote de périphérique d'affichage installé : "
        $DWitch_Process = "Processeur : "
        $Enabled = "Statut Info : Activé (3)"
        $Fabr = "Fabriquant : "
        $False = "Faux"
        $FileINF = "Fichier .inf : "
        $Free = "Libre : "
        $FreePhysicalMemory = "Mémoire physique actuellement inutilisée et disponible : "
        $FreeSpaceInPagingFiles = "Mappage dans les fichiers d'échange du système d'exploitation sans provoquer d'autres pages à être échangé :"
        $FreeVirtualMemory = "Mémoire virtuelle actuellement inutilisée et disponible : "
        $HostingBoard_false = "la carte n'est une carte mère, ou une carte de base dans un châssis :  "
        $HostingBoard_true = "la carte est une carte mère, ou une carte de base dans un châssis :  "
        $HotSwappable_false = "le paquet ne peut pas être remplacé à chaud : "
        $HotSwappable_true = "le paquet peut être remplacé à chaud : "
        $IDProcess = "Identifiant du processeur : "
        $Inconnu = "Statut Info : Inconnu (2)"
        $MemVideo = "Taille de la mémoire de la carte vidéo : "
        $Name = "Nom : "
        $NbCoreLogique = "Nombre de Processeurs Logiques : "
        $NbCorePermis = "Nombre de coeurs admis : "
        $NbCoreProcess = "Nombre de coeurs : "
        $NumberOfLicensedUsers = "Nombre de licences utilisateur pour le système d'exploitation. Si illimité, 0 (zéro). Si inconnu, -1 : "
        $NumberOfProcesses = "Nombre de contextes de processus actuellement chargé ou exécuté sur le système d'exploitation : "
        $NumberOfUsers = "Nombre de sessions utilisateur pour lequel le système d'exploitation est le stockage des informations d'état actuellement : "
        $NumSerie = "Numéro de série :"
        $OutputBios_0 = "- Réservé (0)"
        $OutputBios_1 = "- Réservé (1)"
        $OutputBios_10 = "- APM est pris en charge (10)"
        $OutputBios_11 = "- BIOS est actualisable (Flash) (11)"
        $OutputBios_12 = "- Observation du BIOS est autorisé  (12)"
        $OutputBios_13 = "- VL-VESA est pris en charge (13)"
        $OutputBios_14 = "- Support ESCD est disponible (14)"
        $OutputBios_15 = "- Boot from CD est pris en charge (15)"
        $OutputBios_16 = "- Boot sélectionnable est pris en charge (16)"
        $OutputBios_17 = "- BIOS ROM est connectable (17)"
        $OutputBios_18 = "- Boot De PC Card (PCMCIA) est prise en charge (18)"
        $OutputBios_19 = "- EDD (Enhanced Disk Drive) Spécification est prise en charge (19)"
        $OutputBios_2 = "- Inconnu (2)"
        $OutputBios_20 = "- Int 13h - Floppy japonais pour NEC 9800 1.2mb (3,5 \ , 1k octets / secteur, 360 RPM) est pris en charge(20) "
        $OutputBios_21 = "- Int 13h - Floppy japonais pour Toshiba 1.2mb (3,5 \ , 360 RPM) est pris en charge(21) "
        $OutputBios_22 = "- Int 13h - 5,25 \  / 360 KB Floppy services sont pris en charge(22) "
        $OutputBios_23 = "- Int 13h - 5,25 \  / 1.2MB services Floppy sont pris en charge(23) "
        $OutputBios_24 = "- Int 13h - 3,5 \  / 720 KB Floppy services sont pris en charge(24) "
        $OutputBios_25 = "- Int 13h - 3,5 \  / 2.88 MB Floppy services sont pris en charge(25) "
        $OutputBios_26 = "- Int 5h, service d' impression écran est prise en charge (26)"
        $OutputBios_27 = "- Int 9H, 8042 services de clavier sont pris en charge (27)"
        $OutputBios_28 = "- Int 14h, services de série sont pris en charge (28)"
        $OutputBios_29 = "- Int 17h, les services d'impression sont pris en charge (29)"
        $OutputBios_3 = "- BIOS Caractéristiques non pris en charge (3)"
        $OutputBios_30 = "- Int 10h, CGA / Mono services vidéo sont pris en charge (30)"
        $OutputBios_31 = "- NEC PC-98 (31)"
        $OutputBios_32 = "- ACPI pris en charge (32)"
        $OutputBios_33 = "- Legacy USB est prise en charge (33)"
        $OutputBios_34 = "- AGP est prise en charge (34)"
        $OutputBios_35 = "- I2O boot est prise en charge (35)"
        $OutputBios_36 = "- LS-120 boot est prise en charge (36)"
        $OutputBios_37 = "- ATAPI lecteur ZIP boot est pris en charge (37)"
        $OutputBios_38 = "- 1394 boot est pris en charge (38)"
        $OutputBios_39 = "- Smart Battery prise en charge (39)"
        $OutputBios_4 = "- ISA est pris en charge (4)"
        $OutputBios_40_47 = "- Réservé aux fournisseurs de BIOS (40 - 47)"
        $OutputBios_48_63 = "- Réservé aux fournisseurs Système (48 - 63)"
        $OutputBios_5 = "- MCA est pris en charge (5)"
        $OutputBios_6 = "- EISA est pris en charge (6)"
        $OutputBios_7 = "- PCI est pris en charge (7)"
        $OutputBios_8 = "- PC Card (PCMCIA) est pris en charge (8)"
        $OutputBios_9 = "- Plug and Play est pris en charge (9)"
        $OutputProc_1 = "Autres (1)"
        $OutputProc_2 = "Inconnu (2)"
        $OutputProc_3 = "Processeur central (3)"
        $OutputProc_4 = "Math Processeur (4)"
        $OutputProc_5 = "DSP Processeur (5)"
        $OutputProc_6 = "Processeur vidéo (6)"
        $ProcVirtuel = "Le firmware a permis les extensions de virtualisation : "
        $ProcVirtuelNot = "Le firmware n'est pas permis pour les extensions de virtualisation : "
        $Produit = "Produit : "
        $Proprio = "Propriètaire : "
        $Reference = "Référence : "
        $Removable_false = "L'emballage physique n'est pas amovible : "
        $Removable_true = "L'emballage physique est amovible : "
        $Replaceable_false = "Paquet physique non remplaçable : "
        $Replaceable_true = "Paquet physique remplaçable : "
        $Sansobjet = "Statut Info : Sans objet (5)"
        $SMBIOS_NDispo = "SMBIOS Non disponible : "
        $SMBIOS_VSysMesure = "SMBIOS : Version du système de mesure : "
        $SortieWMI_BaseBoard = "Sortie WMI : Aucun objets WMI trouvés pour la Classe : Win32_BaseBoard"
        $SortieWMI_Bios = "Sortie WMI : Aucun objets WMI trouvés pour la Classe : Win32_BIOS"
        $SortieWMI_OperatingSystem = "Sortie WMI : Aucun objets WMI trouvés pour la Classe : Win32_OperatingSystem"
        $SortieWMI_PhysicalMemory = "Sortie WMI : Aucun objets WMI trouvés pour la Classe : PhysicalMemory"
        $SortieWMI_Proc = "Sortie WMI : Aucun objets WMI trouvés pour la Classe : Win32_Processor"
        $SortieWMI_Video = "Sortie WMI : Aucun objets WMI trouvés pour la Classe : Win32_VideoController"
        $SortieWMIRF = "Sortie WMI refusée"
        $Speed = "Vitesse mémoire : "
        $Statut = "Statut : "
        $SWMI = " Sortie WMI pour la classe : "
        $True = "Vrai"
        $TypeProcess = "Type du processeur : "
        $Used = "Utilisée : "
        $VersBoard = "Version : "
        $VideoMemoryType = "Type de mémoire vidéo : "
        $WMProcess = "le processeur prend en charge les machines virtuelles pour Intel ou AMD Virtual Machine Monitor extensions : "
        $WMProcessInfo = "Information : Cette propriété n'est pas supportée avant Windows 8 et Windows Serveur 2012. "
EndSelect

Select
    Case $SLANGUE = "Anglais"
        $CMECWIN32 = "Win32 Configuration Manager error code : "
        $Accelerateur3D = "3D Accelerator (3)"
        $AccelerateurGraph = "Graphics Accelerator (2)"
        $ArchVideo = "Type of video architecture. : "
        $Autre = "Other : "
        $Autres = "Status Info : Other  (1)"
        $Availability10 = "Degraded (10)"
        $Availability11 = "Not Installed (11)"
        $Availability12 = "Install Error (12)"
        $Availability13 = "Power Save - Unknown (13)"
        $Availability14 = "Power Save - Low Power Mode (14)"
        $Availability15 = "Power Save - Standby (15)"
        $Availability16 = "Power Cycle (16)"
        $Availability17 = "Power Save - Warning (17)"
        $Availability18 = "Paused (18)"
        $Availability19 = "Paused (18)"
        $Availability20 = "Not Configured (20)"
        $Availability21 = "Quiesced (21)"
        $Availability3 = "Running/Full Power (3)"
        $Availability4 = "Warning (4)"
        $Availability5 = "DIn Test (5)"
        $Availability6 = "Not Applicable (6)"
        $Availability7 = "Power Off (7)"
        $Availability8 = "Off Line (8)"
        $Availability9 = "Off Duty (9)"
        $BBoard_SWMI = " WMI class output for Win32_BaseBoard "
        $Bios = "BIOS : "
        $Bios_Caracteristique = "BIOS Features : "
        $Bios_ELIDepl = "State of the installation software : Déployable (0)"
        $Bios_ELIExectable = "State of the installation software : Executable (2)"
        $Bios_ELIExecution = "State of the installation software : Running  (3)"
        $Bios_ELIInst = "State of the installation software : Installable  (1)"
        $Bios_LangageEdit = "Language Edition : "
        $Bios_NumSerie = "Numéro de série : "
        $Bios_OutOBJ = "No items found for WMI Class :" & "Win32_BIOS"
        $Bios_OutSWMI = "No WMI output for this class"
        $Bios_SMBIOSDispo = "SMBIOS : Available "
        $Capacity = "Capacity : "
        $Caption = "Legend : "
        $CMEC0 = "This device is working properly. (0) "
        $CMEC1 = "This device is not configured correctly. (1) "
        $CMEC10 = "This device cannot start. (10) "
        $CMEC11 = "This device failed. (11) "
        $CMEC12 = "This device cannot find enough free resources that it can use. (12) "
        $CMEC13 = "Windows cannot verify this device's resources. (13) "
        $CMEC14 = "This device cannot work properly until you restart your computer. (14) "
        $CMEC15 = "This device is not working properly because there is probably a re-enumeration problem. (15) "
        $CMEC16 = "Windows cannot identify all the resources this device uses. (16) "
        $CMEC17 = "This device is asking for an unknown resource type. (17) "
        $CMEC18 = "Reinstall the drivers for this device. (18) "
        $CMEC19 = "Failure using the VxD loader. (19) "
        $CMEC2 = "Windows cannot load the driver for this device. (2) "
        $CMEC20 = "Your registry might be corrupted. (20) "
        $CMEC21 = "System failure: Try changing the driver for this device. If that does not work, see your hardware documentation. Windows is removing this device. (21) "
        $CMEC22 = "This device is disabled. (22) "
        $CMEC23 = "System failure: Try changing the driver for this device. If that doesn't work, see your hardware documentation. (23) "
        $CMEC24 = "This device is not present, is not working properly, or does not have all its drivers installed. (24) "
        $CMEC25 = "Windows is still setting up this device. (25) "
        $CMEC26 = "Windows is still setting up this device. (26) "
        $CMEC27 = "This device does not have valid log configuration. (27) "
        $CMEC28 = "The drivers for this device are not installed. (28) "
        $CMEC29 = "This device is disabled because the firmware of the device did not give it the required resources. (29) "
        $CMEC3 = "The driver for this device might be corrupted, or your system may be running low on memory or other resources. (3) "
        $CMEC30 = "This device is using an Interrupt Request (IRQ) resource that another device is using. (30) "
        $CMEC31 = "This device is not working properly because Windows cannot load the drivers required for this device. (31) "
        $CMEC4 = "This device is not working properly. One of its drivers or your registry might be corrupted. (4) "
        $CMEC5 = "The driver for this device needs a resource that Windows cannot manage. (5) "
        $CMEC6 = "The boot configuration for this device conflicts with other devices. (6) "
        $CMEC7 = "Cannot filter. (7) "
        $CMEC8 = "The driver loader for the device is missing. (8) "
        $CMEC9 = "This device is not working properly because the controlling firmware is reporting the resources for the device incorrectly. (9) "
        $ConfigOption = "Config Options: "
        $ConfigUserVideo = "Configuration définie par l' utilisateur : "
        $ControlVideo = "Capabilities of the video controller : "
        $CurrentBitsPerPixel = "Number of bits used to display each pixel : "
        $CurrentRefreshRate = "Frequency at which the video controller refreshes the image : "
        $DeviceID = "Reference of the device : "
        $Disabled = "Status Info : Disabled  (4)"
        $DispoVideoControl = "Availability and status of the device : "
        $DriverInstall = "Name of the installed display device driver : "
        $DWitch_Process = "Processor : "
        $Enabled = "Status Info : Enabled  (3)"
        $Fabr = "Manufacturer : "
        $FileINF = "File .inf : "
        $Free = "Free : "
        $FreePhysicalMemory = "Number, in GB, of physical memory currently unused and available : "
        $FreeSpaceInPagingFiles = "Number, in GB, that can be mapped into the operating system paging files without causing any other pages to be swapped out : "
        $FreeVirtualMemory = "Number, in GB, of virtual memory currently unused and available : "
        $HostingBoard_false = "The card is not a motherboard, or a baseboard in a chassis : "
        $HostingBoard_true = "The card is a motherboard, or a baseboard in a chassis : "
        $HotSwappable_false = "The packet can not be hot-swapped : "
        $HotSwappable_true = "The package can be hot-swapped : "
        $IDProcess = "Processor Id : "
        $Inconnu = "Status Info : Unknown  (2)"
        $MemVideo = "Memory size of the video adapter : "
        $Name = "Name : "
        $NbCoreLogique = "Number Of Logical Processors : "
        $NbCorePermis = "Number Of Enabled Core : "
        $NbCoreProcess = "Number Of Cores : "
        $NumberOfLicensedUsers = "Number of user licenses for the operating system. If unlimited, enter 0 (zero). If unknown, enter -1 : "
        $NumberOfProcesses = "Number of process contexts currently loaded or running on the operating system : "
        $NumberOfUsers = "Number of user sessions for which the operating system is storing state information currently : "
        $NumSerie = "SerialNumber: "
        $OutputBios_0 = "- Reserved  (0)"
        $OutputBios_1 = "- Reserved  (1)"
        $OutputBios_10 = "- APM is supported  (10)"
        $OutputBios_11 = "- BIOS is Upgradeable  (Flash) (11)"
        $OutputBios_12 = "- BIOS shadowing is allowed  (12)"
        $OutputBios_13 = "- VL-VESA is supported (13)"
        $OutputBios_14 = "- ESCD support is available  (14)"
        $OutputBios_15 = "- Boot from CD is supported  (15)"
        $OutputBios_16 = "- Selectable Boot is supported (16)"
        $OutputBios_17 = "- BIOS ROM is socketed (17)"
        $OutputBios_18 = "- Boot From PC Card (PCMCIA) is supported  (18)"
        $OutputBios_19 = "- EDD (Enhanced Disk Drive) Specification is supported  (19)"
        $OutputBios_2 = "- Unknown  (2)"
        $OutputBios_20 = "- Int 13h - Floppy japonais pour NEC 9800 1.2mb (3,5 \ , 1k octets / secteur, 360 RPM) is supported (20) "
        $OutputBios_21 = "- Int 13h - Floppy japonais pour Toshiba 1.2mb (3,5 \ , 360 RPM) is supported (21) "
        $OutputBios_22 = "- Int 13h - 5,25 \  / 360 KB Floppy Services are supported (22) "
        $OutputBios_23 = "- Int 13h - 5,25 \  / 1.2MB Floppy Services are supported (23) "
        $OutputBios_24 = "- Int 13h - 3,5 \  / 720 KB Floppy Services are supported (24) "
        $OutputBios_25 = "- Int 13h - 3,5 \  / 2.88 MB Floppy Services are supported (25) "
        $OutputBios_26 = "- Int 5h, Print Screen Service is supported (26)"
        $OutputBios_27 = "- Int 9h, 8042 Keyboard services are supported (27)"
        $OutputBios_28 = "- Int 14h, Serial Services are supported (28)"
        $OutputBios_29 = "- Int 17h, printer services are supported (29)"
        $OutputBios_3 = "- BIOS Characteristics Not Supported (3)"
        $OutputBios_30 = "- Int 10h, CGA/Mono Video Services are supported (30)"
        $OutputBios_31 = "- NEC PC-98 (31)"
        $OutputBios_32 = "- ACPI supported (32)"
        $OutputBios_33 = "- Legacy USB is supported (33)"
        $OutputBios_34 = "- AGP is supported (34)"
        $OutputBios_35 = "- I2O boot is supported (35)"
        $OutputBios_36 = "- LS-120 boot is supported (36)"
        $OutputBios_37 = "- ATAPI ZIP Drive boot is supported (37)"
        $OutputBios_38 = "- 1394 boot is supported (38)"
        $OutputBios_39 = "- Smart Battery supported (39)"
        $OutputBios_4 = "- ISA is supported  (4)"
        $OutputBios_40_47 = "- Reserved for BIOS vendor (40 - 47)"
        $OutputBios_48_63 = "- Reserved for system vendor (48 - 63)"
        $OutputBios_5 = "- MCA is supported  (5)"
        $OutputBios_6 = "- EISA is supported  (6)"
        $OutputBios_7 = "- PCI is supported  (7)"
        $OutputBios_8 = "- PC Card (PCMCIA) is supported  (8)"
        $OutputBios_9 = "- Plug and Play is supported  (9)"
        $OutputProc_1 = "Other (1)"
        $OutputProc_2 = "Unknown (2)"
        $OutputProc_3 = "Central Processor (3)"
        $OutputProc_4 = "Math Processor (4)"
        $OutputProc_5 = "DSP Processor (5)"
        $OutputProc_6 = "Video Processor (6)"
        $ProcVirtuel = "The Firmware has enabled virtualization extensions : "
        $ProcVirtuelNot = "Le Firmware has not enabled virtualization extensions : "
        $Produit = "Product : "
        $Proprio = "Proprietary : "
        $Reference = "PartNumber : "
        $Removable_false = "package is not removable : "
        $Removable_true = "Package is removable : "
        $Replaceable_false = "Package is not removable : "
        $Replaceable_true = "Package is removable : "
        $Sansobjet = "Status Info : Not Applicable (5)"
        $SMBIOS_NDispo = "SMBIOS Not available : "
        $SMBIOS_VSysMesure = "Version of the measuring system : "
        $SortieWMIRF = "WMI exit denied"
        $SortieWMI_BaseBoard = "WMI Released: No WMI items found for the class: Win32_BaseBoard"
        $SortieWMI_Bios = "WMI Released: No WMI items found for the class: Win32_BIOS"
        $SortieWMI_OperatingSystem = "WMI Released: No WMI items found for the class: Win32_OperatingSystem"
        $SortieWMI_PhysicalMemory = "WMI Released: No WMI items found for the class: PhysicalMemory"
        $SortieWMI_Proc = "WMI Released: No WMI items found for the class: Win32_Processor"
        $SortieWMI_Video = "WMI Released: No WMI items found for the class: Win32_VideoController"
        $Speed = "Speed : "
        $Statut = "Status : "
        $SWMI = " WMI class output for : "
        $TypeProcess = "Processor Type : "
        $Used = "Used : "
        $VersBoard = "Version: "
        $VideoMemoryType = "Type of video memory : "
        $WMProcess = "The processor supports Intel or AMD Virtual Machine Monitor extensions. : "
        $WMProcessInfo = "Information : This property is not supported before Windows 8 and Windows Server 2012"
EndSelect

 If @OSVersion > "WIN_VISTA" and "WIN_2008" Then
 MsgBox(0, "WMI Hardwares", "Vista ou Windows Server 2008 minimum")
EndIf


#cs ----------------------------------------------------------------------------
     Win32_BIOS class
    _Win32_BIOS()

     Functions: _WinClaasOperatingSystem()
    _OperatingSystem()
    _FreeMem()

    "BootDevice: " & $objItem.BootDevice & @CRLF
    "BuildNumber: " & $objItem.BuildNumber & @CRLF
    "BuildType: " & $objItem.BuildType & @CRLF
    "Caption: " & $objItem.Caption & @CRLF
    "CodeSet: " & $objItem.CodeSet & @CRLF
    "CountryCode: " & $objItem.CountryCode & @CRLF
    "CreationClassName: " & $objItem.CreationClassName & @CRLF
    "CSCreationClassName: " & $objItem.CSCreationClassName & @CRLF
    "CSDVersion: " & $objItem.CSDVersion & @CRLF
    "CSName: " & $objItem.CSName & @CRLF
    "CurrentTimeZone: " & $objItem.CurrentTimeZone & @CRLF
    "DataExecutionPrevention_32BitApplications: " & $objItem.DataExecutionPrevention_32BitApplications & @CRLF
    "DataExecutionPrevention_Available: " & $objItem.DataExecutionPrevention_Available & @CRLF
    "DataExecutionPrevention_Drivers: " & $objItem.DataExecutionPrevention_Drivers & @CRLF
    "DataExecutionPrevention_SupportPolicy: " & $objItem.DataExecutionPrevention_SupportPolicy & @CRLF
    "Debug: " & $objItem.Debug & @CRLF
    "Description: " & $objItem.Description & @CRLF
    "Distributed: " & $objItem.Distributed & @CRLF
    "EncryptionLevel: " & $objItem.EncryptionLevel & @CRLF
    "ForegroundApplicationBoost: " & $objItem.ForegroundApplicationBoost & @CRLF
    "FreePhysicalMemory: " & $objItem.FreePhysicalMemory & @CRLF
    "FreeSpaceInPagingFiles: " & $objItem.FreeSpaceInPagingFiles & @CRLF
    "FreeVirtualMemory: " & $objItem.FreeVirtualMemory & @CRLF
    "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    "LargeSystemCache: " & $objItem.LargeSystemCache & @CRLF
    "LastBootUpTime: " & WMIDateStringToDate($objItem.LastBootUpTime) & @CRLF
    "LocalDateTime: " & WMIDateStringToDate($objItem.LocalDateTime) & @CRLF
    "Locale: " & $objItem.Locale & @CRLF
    "Manufacturer: " & $objItem.Manufacturer & @CRLF
    "MaxNumberOfProcesses: " & $objItem.MaxNumberOfProcesses & @CRLF
    "MaxProcessMemorySize: " & $objItem.MaxProcessMemorySize & @CRLF
      $strMUILanguages = $objItem.MUILanguages(0)
    "MUILanguages: " & $strMUILanguages & @CRLF
    "Name: " & $objItem.Name & @CRLF
    "NumberOfLicensedUsers: " & $objItem.NumberOfLicensedUsers & @CRLF
    "NumberOfProcesses: " & $objItem.NumberOfProcesses & @CRLF
    "NumberOfUsers: " & $objItem.NumberOfUsers & @CRLF
    "OperatingSystemSKU: " & $objItem.OperatingSystemSKU & @CRLF
    "Organization: " & $objItem.Organization & @CRLF
    "OSArchitecture: " & $objItem.OSArchitecture & @CRLF
    "OSLanguage: " & $objItem.OSLanguage & @CRLF
    "OSProductSuite: " & $objItem.OSProductSuite & @CRLF
    "OSType: " & $objItem.OSType & @CRLF
    "OtherTypeDescription: " & $objItem.OtherTypeDescription & @CRLF
    "PAEEnabled: " & $objItem.PAEEnabled & @CRLF
    "PlusProductID: " & $objItem.PlusProductID & @CRLF
    "PlusVersionNumber: " & $objItem.PlusVersionNumber & @CRLF
    "PortableOperatingSystem: " & $objItem.PortableOperatingSystem & @CRLF
    "Primary: " & $objItem.Primary & @CRLF
    "ProductType: " & $objItem.ProductType & @CRLF
    "RegisteredUser: " & $objItem.RegisteredUser & @CRLF
    "SerialNumber: " & $objItem.SerialNumber & @CRLF
    "ServicePackMajorVersion: " & $objItem.ServicePackMajorVersion & @CRLF
    "ServicePackMinorVersion: " & $objItem.ServicePackMinorVersion & @CRLF
    "SizeStoredInPagingFiles: " & $objItem.SizeStoredInPagingFiles & @CRLF
    "Status: " & $objItem.Status & @CRLF
    "SuiteMask: " & $objItem.SuiteMask & @CRLF
    "SystemDevice: " & $objItem.SystemDevice & @CRLF
    "SystemDirectory: " & $objItem.SystemDirectory & @CRLF
    "SystemDrive: " & $objItem.SystemDrive & @CRLF
    "TotalSwapSpaceSize: " & $objItem.TotalSwapSpaceSize & @CRLF
    "TotalVirtualMemorySize: " & $objItem.TotalVirtualMemorySize & @CRLF
    "TotalVisibleMemorySize: " & $objItem.TotalVisibleMemorySize & @CRLF
    "Version: " & $objItem.Version & @CRLF
    "WindowsDirectory: " & $objItem.WindowsDirectory & @CRLF
#ce ----------------------------------------------------------------------------

;~ _OperatingSystem()

Func _WinClaasOperatingSystem()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", 0x10 + 0x20)
EndFunc   ;==>WinClaasOperatingSystem

Func _OperatingSystem()
    _WinClaasOperatingSystem()
    If IsObj($colItems) Then
        Local $Object_Flag = 0
        For $objItem In $colItems
            $Object_Flag = 1
            $Output &= $SWMI & "Win32_OperatingSystem" & @CRLF
            $Output &= "-----------------------------------------" & @CRLF & @CRLF
            $Output &= $Name & $objItem.Name & @CRLF
            $Output &= "OS Architecture : " & $objItem.OSArchitecture & @CRLF
            $Output &= $Fabr & $objItem.Manufacturer & @CRLF
            Local $strMUILanguages = $objItem.MUILanguages(0)
            $Output &= "MUI Languages : " & $strMUILanguages & @CRLF
            $Output &= "Version : " & $objItem.Version & @CRLF
            $Output &= "SystemDrive : " & $objItem.SystemDrive & @CRLF
            $Output &= "-----------------------------------------" & @CRLF & @CRLF
            _FreeMem()
            $Output &= "-----------------------------------------" & @CRLF & @CRLF
            $Output &= $NumberOfLicensedUsers & $objItem.NumberOfLicensedUsers & @CRLF
            $Output &= $NumberOfProcesses & $objItem.NumberOfProcesses & @CRLF
            $Output &= $NumberOfUsers & $objItem.NumberOfUsers & @CRLF
            If $Object_Flag = 0 Then $Output &= $SortieWMIRF & $OutputTitle & @CRLF
            If $Output = "" Then $Output &= $SortieWMI_OperatingSystem & @CRLF
            If MsgBox(64, "", $Output) = 2 Then ExitLoop
        Next
    EndIf
EndFunc   ;==>_OperatingSystem

Func _FreeMem()
    _WinClaasOperatingSystem()
    For $objItem In $colItems
        $FPMem = $objItem.FreePhysicalMemory / 1024 ^ 2
        $ResutFreePhyMem = StringLeft($FPMem, 5)
        $Output &= $FreePhysicalMemory & $ResutFreePhyMem & " - GO" & @CRLF
        $FSpacePF = $objItem.FreeSpaceInPagingFiles / 1024 ^ 2
        $ResultFreeSpacePF = StringLeft($FSpacePF, 5)
        $Output &= $FreeSpaceInPagingFiles & $ResultFreeSpacePF & " - GO" & @CRLF
        $FreeVirtualMem = $objItem.FreeVirtualMemory / 1024 ^ 2
        $ResultFreeVirtualMem = StringLeft($FreeVirtualMem, 5)
        $Output &= $FreeVirtualMemory & $ResultFreeVirtualMem & " - GO" & @CRLF
    Next
EndFunc   ;==>FreeMem

#cs ----------------------------------------------------------------------------
     Win32_BIOS class
    _Win32_BIOS()

     Functions: _WinClassesBios()
    _Win32_BIOS()
    _SMBIOSP()
    _BIOS_SoftwareElementState()
    _BIOSCharacteristics()

    $strBiosCharacteristics = $objItem.BiosCharacteristics(0)
    "BiosCharacteristics: " & $strBiosCharacteristics & @CRLF
    $strBIOSVersion = $objItem.BIOSVersion(0)
    "BIOSVersion: " & $strBIOSVersion & @CRLF
    "BuildNumber: " & $objItem.BuildNumber & @CRLF
    "Caption: " & $objItem.Caption & @CRLF
    "CodeSet: " & $objItem.CodeSet & @CRLF
    "CurrentLanguage: " & $objItem.CurrentLanguage & @CRLF
    "Description: " & $objItem.Description & @CRLF
    "EmbeddedControllerMajorVersion: " & $objItem.EmbeddedControllerMajorVersion & @CRLF
    "EmbeddedControllerMinorVersion: " & $objItem.EmbeddedControllerMinorVersion & @CRLF
    "IdentificationCode: " & $objItem.IdentificationCode & @CRLF
    "InstallableLanguages: " & $objItem.InstallableLanguages & @CRLF
    "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    "LanguageEdition: " & $objItem.LanguageEdition & @CRLF
    $strListOfLanguages = $objItem.ListOfLanguages(0)
    "ListOfLanguages: " & $strListOfLanguages & @CRLF
    "Manufacturer: " & $objItem.Manufacturer & @CRLF
    "Name: " & $objItem.Name & @CRLF
    "OtherTargetOS: " & $objItem.OtherTargetOS & @CRLF
    "PrimaryBIOS: " & $objItem.PrimaryBIOS & @CRLF
    "ReleaseDate: " & WMIDateStringToDate($objItem.ReleaseDate) & @CRLF
    "SerialNumber: " & $objItem.SerialNumber & @CRLF
    "SMBIOSBIOSVersion: " & $objItem.SMBIOSBIOSVersion & @CRLF
    "SMBIOSMajorVersion: " & $objItem.SMBIOSMajorVersion & @CRLF
    "SMBIOSMinorVersion: " & $objItem.SMBIOSMinorVersion & @CRLF
    "SMBIOSPresent: " & $objItem.SMBIOSPresent & @CRLF
    "SoftwareElementID: " & $objItem.SoftwareElementID & @CRLF
    "SoftwareElementState: " & $objItem.SoftwareElementState & @CRLF
    "Status: " & $objItem.Status & @CRLF
    "SystemBiosMajorVersion: " & $objItem.SystemBiosMajorVersion & @CRLF
    "SystemBiosMinorVersion: " & $objItem.SystemBiosMinorVersion & @CRLF
    "TargetOperatingSystem: " & $objItem.TargetOperatingSystem & @CRLF
    "Version: " & $objItem.Version & @CRLF
#ce ----------------------------------------------------------------------------

;~ _BIOS()

Func _WinClassesBios()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", 0x10 + 0x20)
EndFunc   ;==>_WinClassesBios

Func _BIOS()
    _WinClassesBios()
    If IsObj($colItems) Then
        Local $Object_Flag = 0
        For $objItem In $colItems
            $Object_Flag = 1
            $Output &= $SWMI & "Win32_BIOS" & @CRLF
            $Output &= "-----------------------------------------" & @CRLF & @CRLF
            $Output &= $Bios & $objItem.BIOSVersion(0) & @CRLF
            $Output &= $Bios_LangageEdit & $objItem.CurrentLanguage & @CRLF
            $Output &= $Fabr & $objItem.Manufacturer & @CRLF
            $Output &= $Bios_NumSerie & $objItem.SerialNumber & @CRLF
            _SMBIOSP()
            _BIOS_SoftwareElementState()
            $Output &= $Statut & $objItem.Status & @CRLF & @CRLF
            $Output &= $Bios_Caracteristique & @CRLF
            $Output &= "-------------------------" & @CRLF
            _BIOSCharacteristics()
            If $Object_Flag = 0 Then $Output &= $SortieWMIRF & $OutputTitle & @CRLF
            If $Output = "" Then $Output &= $SortieWMI_Bios & @CRLF
            If MsgBox(64, "", $Output) = 2 Then ExitLoop
        Next
    EndIf
EndFunc   ;==>_BIOS

Func _SMBIOSP()
    _WinClassesBios()
    For $objItem In $colItems
        Local $SMBIOS = $objItem.SMBIOSPresent
        If $SMBIOS = 1 Then
            $Output &= $Bios_SMBIOSDispo & @CRLF
            $Output &= $SMBIOS_VSysMesure & $objItem.SMBIOSBIOSVersion & @CRLF
        Else
            $Output &= $SMBIOS_NDispo & $objItem.SMBIOSPresent & @CRLF
        EndIf
    Next
EndFunc   ;==>_SMBIOSP

Func _BIOS_SoftwareElementState()
    _WinClassesBios()
    For $objItem In $colItems
        Local $SoftwareElementState = $objItem.SoftwareElementState
        Switch $SoftwareElementState
            Case 0
                $Output &= $Bios_ELIDepl & @CRLF
            Case 1
                $Output &= $Bios_ELIInst & @CRLF
            Case 2
                $Output &= $Bios_ELIExectable & @CRLF
            Case 3
                $Output &= $Bios_ELIExecution & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_BIOS_SoftwareElementState

Func _BIOSCharacteristics()
    _WinClassesBios()
    For $objItem In $colItems
        Local $strBiosCharacteristics = $objItem.BiosCharacteristics
        For $Bios_Cr In $strBiosCharacteristics
            Switch $Bios_Cr
                Case 0
                    $Output &= $OutputBios_0 & @CRLF
                Case 1
                    $Output &= $OutputBios_1 & @CRLF
                Case 2
                    $Output &= $OutputBios_2 & @CRLF
                Case 3
                    $Output &= $OutputBios_3 & @CRLF
                Case 4
                    $Output &= $OutputBios_4 & @CRLF
                Case 5
                    $Output &= $OutputBios_5 & @CRLF
                Case 6
                    $Output &= $OutputBios_6 & @CRLF
                Case 7
                    $Output &= $OutputBios_7 & @CRLF
                Case 8
                    $Output &= $OutputBios_8 & @CRLF
                Case 9
                    $Output &= $OutputBios_9 & @CRLF
                Case 10
                    $Output &= $OutputBios_10 & @CRLF
                Case 11
                    $Output &= $OutputBios_11 & @CRLF
                Case 12
                    $Output &= $OutputBios_12 & @CRLF
                Case 13
                    $Output &= $OutputBios_13 & @CRLF
                Case 14
                    $Output &= $OutputBios_14 & @CRLF
                Case 15
                    $Output &= $OutputBios_15 & @CRLF
                Case 16
                    $Output &= $OutputBios_16 & @CRLF
                Case 17
                    $Output &= $OutputBios_17 & @CRLF
                Case 18
                    $Output &= $OutputBios_18 & @CRLF
                Case 19
                    $Output &= $OutputBios_19 & @CRLF
                Case 20
                    $Output &= $OutputBios_20 & @CRLF
                Case 21
                    $Output &= $OutputBios_21 & @CRLF
                Case 22
                    $Output &= $OutputBios_22 & @CRLF
                Case 23
                    $Output &= $OutputBios_23 & @CRLF
                Case 24
                    $Output &= $OutputBios_24 & @CRLF
                Case 25
                    $Output &= $OutputBios_25 & @CRLF
                Case 26
                    $Output &= $OutputBios_26 & @CRLF
                Case 27
                    $Output &= $OutputBios_27 & @CRLF
                Case 28
                    $Output &= $OutputBios_28 & @CRLF
                Case 29
                    $Output &= $OutputBios_29 & @CRLF
                Case 30
                    $Output &= $OutputBios_30 & @CRLF
                Case 31
                    $Output &= $OutputBios_31 & @CRLF
                Case 32
                    $Output &= $OutputBios_32 & @CRLF
                Case 33
                    $Output &= $OutputBios_33 & @CRLF
                Case 34
                    $Output &= $OutputBios_34 & @CRLF
                Case 35
                    $Output &= $OutputBios_35 & @CRLF
                Case 36
                    $Output &= $OutputBios_36 & @CRLF
                Case 37
                    $Output &= $OutputBios_37 & @CRLF
                Case 38
                    $Output &= $OutputBios_38 & @CRLF
                Case 39
                    $Output &= $OutputBios_39 & @CRLF
                Case 40 To 47
                    $Output &= $OutputBios_40_47 & @CRLF
                Case 48 To 63
                    $Output &= $OutputBios_48_63 & @CRLF
            EndSwitch
        Next
    Next

EndFunc   ;==>_BIOSCharacteristics

#cs ----------------------------------------------------------------------------
     Win32_BaseBoard class
    _BaseBoard()

     Functions: _WinClassesBaseBoard()
    _BaseBoard()
    _HostingBoard()
    _HotSwappable()
    _Removable()
    _Replaceable()

    $$Output &= "Caption: " & $objItem.Caption & @CRLF
    $strConfigOptions = $objItem.ConfigOptions(0)
    "ConfigOptions: " & $strConfigOptions & @CRLF
    "CreationClassName: " & $objItem.CreationClassName & @CRLF
    "Depth: " & $objItem.Depth & @CRLF
    "Description: " & $objItem.Description & @CRLF
    "Height: " & $objItem.Height & @CRLF
    "HostingBoard: " & $objItem.HostingBoard & @CRLF
    "HotSwappable: " & $objItem.HotSwappable & @CRLF
    "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    "Manufacturer: " & $objItem.Manufacturer & @CRLF
    "Model: " & $objItem.Model & @CRLF
    "Name: " & $objItem.Name & @CRLF
    "OtherIdentifyingInfo: " & $objItem.OtherIdentifyingInfo & @CRLF
    "PartNumber: " & $objItem.PartNumber & @CRLF
    "PoweredOn: " & $objItem.PoweredOn & @CRLF
    "Product: " & $objItem.Product & @CRLF
    "Removable: " & $objItem.Removable & @CRLF
    "Replaceable: " & $objItem.Replaceable & @CRLF
    "RequirementsDescription: " & $objItem.RequirementsDescription & @CRLF
    "RequiresDaughterBoard: " & $objItem.RequiresDaughterBoard & @CRLF
    "SerialNumber: " & $objItem.SerialNumber & @CRLF
    "SKU: " & $objItem.SKU & @CRLF
    "SlotLayout: " & $objItem.SlotLayout & @CRLF
    "SpecialRequirements: " & $objItem.SpecialRequirements & @CRLF
    "Status: " & $objItem.Status & @CRLF
    "Tag: " & $objItem.Tag & @CRLF
    "Version: " & $objItem.Version & @CRLF
    "Weight: " & $objItem.Weight & @CRLF
    "Width: " & $objItem.Width & @CRLF
#ce ----------------------------------------------------------------------------

;~ _BaseBoard()

Func _WinClassesBaseBoard()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", 0x10 + 0x20)
EndFunc   ;==>_WinClassesBaseBoard

Func _BaseBoard()
    _WinClassesBaseBoard()
    If IsObj($colItems) Then
        Local $Object_Flag = 0
        For $objItem In $colItems
            $Object_Flag = 1
            $Output &= $SWMI & "Win32_BaseBoard" & @CRLF
            $Output &= "------------------------------------------------" & @CRLF & @CRLF
            $Output &= $Produit & $objItem.Product & @CRLF
            $Output &= $Fabr & $objItem.Manufacturer & @CRLF
            $Output &= $Caption & $objItem.Caption & @CRLF
            Local $strConfigOptions = $objItem.ConfigOptions(0)
            $Output &= $ConfigOption & $strConfigOptions & @CRLF
            $Output &= $VersBoard & $objItem.Version & @CRLF
            $Output &= $Statut & $objItem.Status & @CRLF
            $Output &= "-----------------------------------------" & @CRLF
            _HostingBoard()
            _HotSwappable()
            $Output &= "-----------------------------------------" & @CRLF
            _Removable()
            _Replaceable()
            If $Object_Flag = 0 Then $Output &= $SortieWMIRF & $OutputTitle & @CRLF
            If $Output = "" Then $Output &= $SortieWMI_BaseBoard & @CRLF
            If MsgBox(64, "", $Output) = 2 Then ExitLoop
        Next
    EndIf
EndFunc   ;==>_BaseBoard

Func _HostingBoard()
    _WinClassesBaseBoard()
    For $objItem In $colItems
        Local $HostingBoard = $objItem.HostingBoard
        If $HostingBoard = 1 Then
            $Output &= $HostingBoard_true & "(HostingBoard) : " & $objItem.HostingBoard & @CRLF
        Else
            $Output &= $HostingBoard_false & "(HostingBoard) : " & $objItem.HostingBoard & @CRLF
        EndIf
    Next
EndFunc   ;==>_HostingBoard

Func _HotSwappable()
    _WinClassesBaseBoard()
    For $objItem In $colItems
        Local $HotSwappable = $objItem.HotSwappable
        If $HotSwappable = 1 Then
            $Output &= $HotSwappable_true & "(HotSwappable) : " & $objItem.HotSwappable & @CRLF
        Else
            $Output &= $HotSwappable_false & "(HotSwappable) : " & $objItem.HotSwappable & @CRLF
        EndIf
    Next
EndFunc   ;==>_HotSwappable

Func _Removable()
    _WinClassesBaseBoard()
    For $objItem In $colItems
        Local $Removable = $objItem.Removable
        If $Removable = 1 Then
            $Output &= $Removable_true & "(Removable) :  " & $objItem.Removable & @CRLF
        Else
            $Output &= $Removable_false & "(Removable) :  " & $objItem.Removable & @CRLF
        EndIf
    Next
EndFunc   ;==>_Removable

Func _Replaceable()
    _WinClassesBaseBoard()
    For $objItem In $colItems
        Local $Replaceable = $objItem.Replaceable
        If $Replaceable = 1 Then
            $Output &= $Replaceable_true & "(Replaceable) :  " & $objItem.Replaceable & @CRLF
        Else
            $Output &= $Replaceable_false & "(Replaceable) :  " & $objItem.Replaceable & @CRLF
        EndIf
    Next
EndFunc   ;==>_Replaceable

#cs ----------------------------------------------------------------------------
    Win32_Processor class
    Processor()

    Functions:  _WinClassesProcessor()
    _Processor()
    _TypeProc()
    _VirtualProcess()
    _VMVirtualProcess()
    _StatuIfoProc()

    $Output &= "AddressWidth: " & $objItem.AddressWidth & @CRLF
    "Architecture: " & $objItem.Architecture & @CRLF
    "AssetTag: " & $objItem.AssetTag & @CRLF
    "Availability: " & $objItem.Availability & @CRLF
    "Caption: " & $objItem.Caption & @CRLF
    "Characteristics: " & $objItem.Characteristics & @CRLF
    "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
    "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
    "CpuStatus: " & $objItem.CpuStatus & @CRLF
    "CreationClassName: " & $objItem.CreationClassName & @CRLF
    "CurrentClockSpeed: " & $objItem.CurrentClockSpeed & @CRLF
    "CurrentVoltage: " & $objItem.CurrentVoltage & @CRLF
    "DataWidth: " & $objItem.DataWidth & @CRLF
    "Description: " & $objItem.Description & @CRLF
    "DeviceID: " & $objItem.DeviceID & @CRLF
    "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
    "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
    "ExtClock: " & $objItem.ExtClock & @CRLF
    "Family: " & $objItem.Family & @CRLF
    "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    "L2CacheSize: " & $objItem.L2CacheSize & @CRLF
    "L2CacheSpeed: " & $objItem.L2CacheSpeed & @CRLF
    "L3CacheSize: " & $objItem.L3CacheSize & @CRLF
    "L3CacheSpeed: " & $objItem.L3CacheSpeed & @CRLF
    "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
    "Level: " & $objItem.Level & @CRLF
    "LoadPercentage: " & $objItem.LoadPercentage & @CRLF
    "Manufacturer: " & $objItem.Manufacturer & @CRLF
    "MaxClockSpeed: " & $objItem.MaxClockSpeed & @CRLF
    "Name: " & $objItem.Name & @CRLF
    "NumberOfCores: " & $objItem.NumberOfCores & @CRLF
    "NumberOfEnabledCore: " & $objItem.NumberOfEnabledCore & @CRLF
    "NumberOfLogicalProcessors: " & $objItem.NumberOfLogicalProcessors & @CRLF
    "OtherFamilyDescription: " & $objItem.OtherFamilyDescription & @CRLF
    "PartNumber: " & $objItem.PartNumber & @CRLF
    "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
    $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
    "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
    "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
    "ProcessorId: " & $objItem.ProcessorId & @CRLF
    "ProcessorType: " & $objItem.ProcessorType & @CRLF
    "Revision: " & $objItem.Revision & @CRLF
    "Role: " & $objItem.Role & @CRLF
    "SecondLevelAddressTranslationExtensions: " & $objItem.SecondLevelAddressTranslationExtensions & @CRLF
    "SerialNumber: " & $objItem.SerialNumber & @CRLF
    "SocketDesignation: " & $objItem.SocketDesignation & @CRLF
    "Status: " & $objItem.Status & @CRLF
    "StatusInfo: " & $objItem.StatusInfo & @CRLF
    "Stepping: " & $objItem.Stepping & @CRLF
    "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    "SystemName: " & $objItem.SystemName & @CRLF
    "ThreadCount: " & $objItem.ThreadCount & @CRLF
    "UniqueId: " & $objItem.UniqueId & @CRLF
    "UpgradeMethod: " & $objItem.UpgradeMethod & @CRLF
    "Version: " & $objItem.Version & @CRLF
    "VirtualizationFirmwareEnabled: " & $objItem.VirtualizationFirmwareEnabled & @CRLF
    "VMMonitorModeExtensions: " & $objItem.VMMonitorModeExtensions & @CRLF
    "VoltageCaps: " & $objItem.VoltageCaps & @CRLF
#ce ----------------------------------------------------------------------------

;~ _Processor()

Func _WinClassesProcessor()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", 0x10 + 0x20)
EndFunc   ;==>_WinClassesProcessor

Func _Processor()
    _WinClassesProcessor()
    If IsObj($colItems) Then
        Local $Object_Flag = 0
        For $objItem In $colItems
            $Object_Flag = 1
            $Output &= $SWMI & "Win32_Processor" & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF & @CRLF
            $Output &= $NamePorcess & $objItem.Name & @CRLF
            $Output &= "Description : " & $objItem.Description & @CRLF
            $Output &= $Fabr & $objItem.Manufacturer & @CRLF
            $Output &= "Role : " & $objItem.Role & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF
            $Output &= $DWitch_Process & " X " & $objItem.DataWidth & @CRLF
            $Output &= $IDProcess & $objItem.ProcessorId & @CRLF
            _TypeProc()
            $Output &= "-----------------------------------------------" & @CRLF
            $Output &= $NbCoreProcess & $objItem.NumberOfCores & @CRLF
            If @OSVersion = "WIN_10" Then ; This property is not supported before Windows Server 2016 Technical Preview and Windows 10.
                $Output &= $NbCorePermis & $objItem.NumberOfEnabledCore & @CRLF
            Else
                $Output &= $NbCorePermis & "? OSVersion < Win 10" & @CRLF
            EndIf
            $Output &= $NbCoreLogique & $objItem.NumberOfLogicalProcessors & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF
            _VirtualFirWareProc()
            _VMVirtualProcess()
            _StatuInfoProc()
            $Output &= $Statut & $objItem.Status & @CRLF
            If $Object_Flag = 0 Then $Output &= $SortieWMIRF & $OutputTitle & @CRLF
            If $Output = "" Then $Output &= $SortieWMI_Proc & @CRLF
            If MsgBox(64, "", $Output) = 2 Then ExitLoop
        Next
    EndIf
EndFunc   ;==>_Processor

Func _TypeProc()
    _WinClassesProcessor()
    For $objItem In $colItems
        Local $ProcessorType = $objItem.ProcessorType
        Switch $ProcessorType
            Case 1
                $Output &= $TypeProcess & $OutputProc_1 & @CRLF
            Case 2
                $Output &= $TypeProcess & $OutputProc_2 & @CRLF
            Case 3
                $Output &= $TypeProcess & $OutputProc_3 & @CRLF
            Case 4
                $Output &= $TypeProcess & $OutputProc_4 & @CRLF
            Case 5
                $Output &= $TypeProcess & $OutputProc_5 & @CRLF
            Case 6
                $Output &= $TypeProcess & $OutputProc_6 & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_TypeProc

Func _VirtualFirWareProc() ; ;~ Windows Server 2008 R2, Windows 7, Windows Server 2008, and Windows Vista:  This property is not supported before Windows 8 and Windows Server 2012.
    _WinClassesProcessor()
    For $objItem In $colItems
        Switch @OSVersion
            Case "WIN_10", "WIN_8.1", "WIN_8", "Win_2008", "WIN_2008R2"
                Local $VirtualizationFirmwareEnabled = $objItem.VirtualizationFirmwareEnabled
                If $VirtualizationFirmwareEnabled = True Then
                    $Output &= $ProcVirtuel & @CRLF
                Else
                    $Output &= $ProcVirtuelNot & @CRLF
                EndIf
            Case Else
                $Output &= $ProcVirtuelNot & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_VirtualFirWareProc

Func _VMVirtualProcess() ; Windows Server 2008 R2, Windows 7, Windows Server 2008, and Windows Vista:  This property is not supported before Windows 8 and Windows Server 2012.
    _WinClassesProcessor()
    For $objItem In $colItems
        Switch @OSVersion
            Case "WIN_10", "WIN_8.1", "WIN_8", "Win_2008", "WIN_2008R2"
                Local $VMMonitorModeExtensions = $objItem.VMMonitorModeExtensions
                If $VMMonitorModeExtensions = 1 Then
                    $Output &= $WMProcess & @CRLF & $WMProcessInfo & @CRLF
                Else
                    $Output &= $WMProcess & @CRLF & $WMProcessInfo & @CRLF
                EndIf
            Case Else
                $Output &= $ProcVirtuelNot & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_VMVirtualProcess

Func _StatuInfoProc()
    _WinClassesProcessor()
    For $objItem In $colItems
        Local $StatusInfo = $objItem.StatusInfo
        Switch $StatusInfo
            Case 1
                $Output &= $Autres & @CRLF
            Case 2
                $Output &= $Inconnu & @CRLF
            Case 3
                $Output &= $Enabled & @CRLF
            Case 4
                $Output &= $Disabled & @CRLF
            Case 5
                $Output &= $Sansobjet & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_StatuInfoProc
;==>WinClassesBaseBoard

#cs ----------------------------------------------------------------------------
    Win32_PhysicalMemory class
    _PhysicalMemory()

    Functions :
    _PhysicalMemory()
    _GETDOSOUTPUT($COMMAND)

    "Access: " & $objItem.Access & @CRLF
    $strAdditionalErrorData = $objItem.AdditionalErrorData(0)
    "AdditionalErrorData: " & $strAdditionalErrorData & @CRLF
    "Availability: " & $objItem.Availability & @CRLF
    "BlockSize: " & $objItem.BlockSize & @CRLF
    "Caption: " & $objItem.Caption & @CRLF
    "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
    "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
    "CorrectableError: " & $objItem.CorrectableError & @CRLF
    "CreationClassName: " & $objItem.CreationClassName & @CRLF
    "Description: " & $objItem.Description & @CRLF
    "DeviceID: " & $objItem.DeviceID & @CRLF
    "EndingAddress: " & $objItem.EndingAddress & @CRLF
    "ErrorAccess: " & $objItem.ErrorAccess & @CRLF
    "ErrorAddress: " & $objItem.ErrorAddress & @CRLF
    "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
    $strErrorData = $objItem.ErrorData(0)
    "ErrorData: " & $strErrorData & @CRLF
    "ErrorDataOrder: " & $objItem.ErrorDataOrder & @CRLF
    "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
    "ErrorGranularity: " & $objItem.ErrorGranularity & @CRLF
    "ErrorInfo: " & $objItem.ErrorInfo & @CRLF
    "ErrorMethodology: " & $objItem.ErrorMethodology & @CRLF
    "ErrorResolution: " & $objItem.ErrorResolution & @CRLF
    "ErrorTime: " & WMIDateStringToDate($objItem.ErrorTime) & @CRLF
    "ErrorTransferSize: " & $objItem.ErrorTransferSize & @CRLF
    "Ins    tallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    "Las    tErrorCode: " & $objItem.LastErrorCode & @CRLF
    "Name: " & $objItem.Name & @CRLF
    "Num    berOfBlocks: " & $objItem.NumberOfBlocks & @CRLF
    "OtherErrorDescription: " & $objItem.OtherErrorDescription & @CRLF
    "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
    $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
    "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
    "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
    "Purpose: " & $objItem.Purpose & @CRLF
    "StartingAddress: " & $objItem.StartingAddress & @CRLF
    "Status: " & $objItem.Status & @CRLF
    "StatusInfo: " & $objItem.StatusInfo & @CRLF
    "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    "SystemLevelAddress: " & $objItem.SystemLevelAddress & @CRLF
    "SystemName: " & $objItem.SystemName & @CRLF $Output &= "Access: " & $objItem.Access & @CRLF
    $strAdditionalErrorData = $objItem.AdditionalErrorData(0)
#ce ----------------------------------------------------------------------------

;~ _PhysicalMemory()
;~  Local $cmd = _GETDOSOUTPUT("wmic MEMORYCHIP get BankLabel,DeviceLocator,Capacity,Tag")
;~  Local $Mem = MemGetStats()
;~  Local $MemTot = Round(($Mem[1]) / 1024 ^ 2)
;~  Local $MemFree = Round(($Mem[2]) / 1024 ^ 2, 2)
;~  Local $MemUtil = $MemTot - $MemFree
;~  $Mem = $Capacity & $MemTot & " GO  -  " & $Free & $MemFree & " GO  -  " & $Used & $MemUtil & " GO" & @CRLF
;~  Local $Tilte = "--------------------------------------------------------" & @CRLF
;~  Local $Tilte1 = $SWMI & "Win32_PhysicalMemory" & @CRLF
;~  Local $Tilte2 = "--------------------------------------------------------" & @CRLF & @CRLF
;~  MsgBox(64, "", $Mem & $Tilte & $Tilte1 & $Tilte2 & $Output & $Tilte & " - CMD - " & @CRLF & $Tilte & @CRLF & $cmd)

Func _PhysicalMemory()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL", 0x10 + 0x20)
    If IsObj($colItems) Then
        Local $Object_Flag = 0
        For $objItem In $colItems
            Local $FormFactor = $objItem.FormFactor
            Local $MemoryType = $objItem.MemoryType
            $Object_Flag = 1
            $Output &= $Name & $objItem.Name & @CRLF
            $Output &= $Fabr & $objItem.Manufacturer & @CRLF
            $Output &= $Speed & $objItem.Speed & " MHz -  Ref : " & $objItem.PartNumber & @CRLF
            Switch $FormFactor
                Case 0
                    $Output &= $Inconnu & " (0)" & @CRLF
                Case 1
                    $Output &= $Autre & " (1)" & @CRLF
                Case 2
                    $Output &= "SIP" & " (2)" & @CRLF
                Case 3
                    $Output &= "DIP" & " (3)" & @CRLF
                Case 4
                    $Output &= "ZIP" & " (4)" & @CRLF
                Case 5
                    $Output &= "SOJ" & " (5)" & @CRLF
                Case 6
                    $Output &= $Proprio & " (6)" & @CRLF
                Case 7
                    $Output &= "SIMM" & " (7)" & @CRLF
                Case 8
                    $Output &= "DIMM" & " (8)" & @CRLF
                Case 9
                    $Output &= "TSOP" & " (9)" & @CRLF
                Case 10
                    $Output &= "PGA" & " (10)" & @CRLF
                Case 11
                    $Output &= "RIMM" & " (11)" & @CRLF
                Case 12
                    $Output &= "SODIMM" & " (12)" & @CRLF
                Case 13
                    $Output &= "SRIMM" & " (13)" & @CRLF
                Case 14
                    $Output &= "SMD" & " (14)" & @CRLF
                Case 15
                    $Output &= "SSMP" & " (15)" & @CRLF
                Case 16
                    $Output &= "QFP" & " (16)" & @CRLF
                Case 17
                    $Output &= "TQFP" & " (17)" & @CRLF
                Case 18
                    $Output &= "SOIC" & " (18)" & @CRLF
                Case 19
                    $Output &= "LCC" & " (19)" & @CRLF
                Case 20
                    $Output &= "PLCC" & " (20)" & @CRLF
                Case 21
                    $Output &= "BGA" & " (21)" & @CRLF
                Case 22
                    $Output &= "FPBGA" & " (22)" & @CRLF
                Case 23
                    $Output &= "LGA" & " (23)" & @CRLF
            EndSwitch
            Switch $MemoryType
                Case 0
                    $Output &= $Inconnu & " (0)" & @CRLF
                Case 1
                    $Output &= $Autre & " (1)" & @CRLF
                Case 2
                    $Output &= "DRAM (2)" & @CRLF
                Case 3
                    $Output &= "Synchronous DRAM (3)" & @CRLF
                Case 4
                    $Output &= "Cache DRAM (4)" & @CRLF
                Case 5
                    $Output &= "EDO (5)" & @CRLF
                Case 6
                    $Output &= "EDRAM (6)" & @CRLF
                Case 7
                    $Output &= "VRAM (7)" & @CRLF
                Case 8
                    $Output &= "SRAM (8)" & @CRLF
                Case 9
                    $Output &= "RAM (9)" & @CRLF
                Case 10
                    $Output &= "ROM (10)" & @CRLF
                Case 11
                    $Output &= "Flash (11)" & @CRLF
                Case 12
                    $Output &= "EEPROM (12)" & @CRLF
                Case 13
                    $Output &= "FEPROM (13)" & @CRLF
                Case 14
                    $Output &= "EPROM (14)" & @CRLF
                Case 15
                    $Output &= "CDRAM (15)" & @CRLF
                Case 16
                    $Output &= "3DRAM (16)" & @CRLF
                Case 17
                    $Output &= "SDRAM (17)" & @CRLF
                Case 18
                    $Output &= "SGRAM (18)" & @CRLF
                Case 19
                    $Output &= "RDRAM (19)" & @CRLF
                Case 20
                    $Output &= "DDR (20)" & @CRLF
                Case 21
                    $Output &= "DDR2 (21)" & @CRLF
                Case 22
                    $Output &= "DDR2 FB-DIMM (22)" & @CRLF
                Case 24
                    $Output &= "DDR3 (24)" & @CRLF
                Case 25
                    $Output &= "FBD2 (25)" & @CRLF
            EndSwitch
            $Output &= $Capacity & $objItem.Capacity / 1024 ^ 2 & "  mb" & @CRLF & @CRLF
            If $Object_Flag = 0 Then $Output &= $SortieWMIRF & $OutputTitle & @CRLF
            If $Output = "" Then $Output &= $SortieWMI_PhysicalMemory & @CRLF
        Next
    EndIf
EndFunc   ;==>_PhysicalMemory

Func _GETDOSOUTPUT($COMMAND)
    Local $CH, $TMP
    Local $TEXT = "", $PID = Run('"' & @ComSpec & '" /c ' & $COMMAND, "", @SW_HIDE, 2 + 4)
    While 1
        $TEXT &= StdoutRead($PID, False, False)
        If @error Then ExitLoop
        Sleep(10)
    WEnd
    $CH = StringSplit("‚,é;Š,è;ƒ,â;ˆ,ê;…,à;—,ù;‡,ç;ÿ, ;“,ô", ";")
    For $i = 1 To $CH[0]
        $TMP = StringSplit($CH[$i], ",")
        $TEXT = StringReplace($TEXT, $TMP[1], $TMP[2])
    Next
    Return $TEXT
EndFunc   ;==>_GETDOSOUTPUT


#cs ----------------------------------------------------------------------------

    Win32_VideoController class
    _VideoController()

    Functions :
    _WinClassesVideoController()
    WMIDateStringToDate($dtmDate)
    _VideoController()
    _VideoArchitecture()
    _AcceleratorCapabilities()
    _Availability()
    _VideoMemoryType()
    _ConfigVideoUser()
    _ConfigManagerErrorCode()

    $strAcceleratorCapabilities = $objItem.AcceleratorCapabilities(0)
    "AcceleratorCapabilities: " & $strAcceleratorCapabilities & @CRLF
    "AdapterCompatibility: " & $objItem.AdapterCompatibility & @CRLF
    "AdapterDACType: " & $objItem.AdapterDACType & @CRLF
    "AdapterRAM: " & $objItem.AdapterRAM & @CRLF
    "Availability: " & $objItem.Availability & @CRLF
    $strCapabilityDescriptions = $objItem.CapabilityDescriptions(0)
    "CapabilityDescriptions: " & $strCapabilityDescriptions & @CRLF
    "Caption: " & $objItem.Caption & @CRLF
    "ColorTableEntries: " & $objItem.ColorTableEntries & @CRLF
    "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
    "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
    "CreationClassName: " & $objItem.CreationClassName & @CRLF
    "CurrentBitsPerPixel: " & $objItem.CurrentBitsPerPixel & @CRLF
    "CurrentHorizontalResolution: " & $objItem.CurrentHorizontalResolution & @CRLF
    "CurrentNumberOfColors: " & $objItem.CurrentNumberOfColors & @CRLF
    "CurrentNumberOfColumns: " & $objItem.CurrentNumberOfColumns & @CRLF
    "CurrentNumberOfRows: " & $objItem.CurrentNumberOfRows & @CRLF
    "CurrentRefreshRate: " & $objItem.CurrentRefreshRate & @CRLF
    "CurrentScanMode: " & $objItem.CurrentScanMode & @CRLF
    "CurrentVerticalResolution: " & $objItem.CurrentVerticalResolution & @CRLF
    "Description: " & $objItem.Description & @CRLF
    "DeviceID: " & $objItem.DeviceID & @CRLF
    "DeviceSpecificPens: " & $objItem.DeviceSpecificPens & @CRLF
    "DitherType: " & $objItem.DitherType & @CRLF
    "DriverDate: " & WMIDateStringToDate($objItem.DriverDate) & @CRLF
    "DriverVersion: " & $objItem.DriverVersion & @CRLF
    "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
    "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
    "ICMIntent: " & $objItem.ICMIntent & @CRLF
    "ICMMethod: " & $objItem.ICMMethod & @CRLF
    "InfFilename: " & $objItem.InfFilename & @CRLF
    "InfSection: " & $objItem.InfSection & @CRLF
    "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    "InstalledDisplayDrivers: " & $objItem.InstalledDisplayDrivers & @CRLF
    "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
    "MaxMemorySupported: " & $objItem.MaxMemorySupported & @CRLF
    "MaxNumberControlled: " & $objItem.MaxNumberControlled & @CRLF
    "MaxRefreshRate: " & $objItem.MaxRefreshRate & @CRLF
    "MinRefreshRate: " & $objItem.MinRefreshRate & @CRLF
    "Monochrome: " & $objItem.Monochrome & @CRLF
    "Name: " & $objItem.Name & @CRLF
    "NumberOfColorPlanes: " & $objItem.NumberOfColorPlanes & @CRLF
    "NumberOfVideoPages: " & $objItem.NumberOfVideoPages & @CRLF
    "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
    $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
    "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
    "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
    "ProtocolSupported: " & $objItem.ProtocolSupported & @CRLF
    "ReservedSystemPaletteEntries: " & $objItem.ReservedSystemPaletteEntries & @CRLF
    "SpecificationVersion: " & $objItem.SpecificationVersion & @CRLF
    "Status: " & $objItem.Status & @CRLF
    "StatusInfo: " & $objItem.StatusInfo & @CRLF
    "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    "SystemName: " & $objItem.SystemName & @CRLF
    "SystemPaletteEntries: " & $objItem.SystemPaletteEntries & @CRLF
    "TimeOfLastReset: " & WMIDateStringToDate($objItem.TimeOfLastReset) & @CRLF
    "VideoArchitecture: " & $objItem.VideoArchitecture & @CRLF
    "VideoMemoryType: " & $objItem.VideoMemoryType & @CRLF
    "VideoMode: " & $objItem.VideoMode & @CRLF
    "VideoModeDescription: " & $objItem.VideoModeDescription & @CRLF
    "VideoProcessor: " & $objItem.VideoProcessor & @CRLF
#ce ----------------------------------------------------------------------------

;~ _VideoController()

Func _WinClassesVideoController()
    $objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", 0x10 + 0x20)
EndFunc   ;==>_WinClassesVideoController

Func _VideoController()
    _WinClassesVideoController()
    If IsObj($colItems) Then
        Local $Object_Flag = 0
        For $objItem In $colItems
            $Object_Flag = 1
            $Output &= $SWMI & "Win32_VideoController" & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF & @CRLF
            $Output &= $Name & $objItem.Name & @CRLF
            $Output &= "DAC : " & $objItem.AdapterDACType & @CRLF
            $Output &= "Description : " & $objItem.VideoModeDescription & @CRLF
            $Output &= $CurrentBitsPerPixel & $objItem.CurrentBitsPerPixel & " bits" & @CRLF
            $Output &= $MemVideo & $objItem.AdapterRAM / 1024 ^ 2 & " MO" & @CRLF
            $Output &= $DeviceID & $objItem.DeviceID & @CRLF
            _VideoArchitecture()
            _AcceleratorCapabilities()
            $Output &= $CurrentRefreshRate & $objItem.CurrentRefreshRate & " Hertz" & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF & @CRLF
            $Output &= "Driver Date : " & WMIDateStringToDate($objItem.DriverDate) & @CRLF
            $Output &= "Driver Version : " & $objItem.DriverVersion & @CRLF
            $Output &= $DriverInstall & $objItem.InstalledDisplayDrivers & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF & @CRLF
            _ConfigVideoUser()
            _VideoMemoryType()
            $Output &= "VideoMemoryType: " & $objItem.VideoMemoryType & @CRLF
            $Output &= $FileINF & $objItem.InfFilename & @CRLF
            $Output &= "Section : " & $objItem.InfSection & @CRLF
            $Output &= "-----------------------------------------------" & @CRLF & @CRLF
            _Availability()
            $Output &= "Status: " & $objItem.Status & @CRLF
            _ConfigManagerErrorCode()
            If $Object_Flag = 0 Then $Output &= $SortieWMIRF & $OutputTitle & @CRLF
            If $Output = "" Then $Output &= $SortieWMI_Video & @CRLF
            If MsgBox(64, "", $Output) = 2 Then ExitLoop
        Next
    EndIf
EndFunc   ;==>_VideoController

Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
            StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
             & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc   ;==>WMIDateStringToDate

Func _VideoArchitecture()
    _WinClassesVideoController()
    For $objItem In $colItems
        Local $VideoArchitecture = $objItem.VideoArchitecture
        Switch $VideoArchitecture
            Case 1
                $Output &= $ArchVideo & $Inconnu & "(0)" & @CRLF
            Case 2
                $Output &= $ArchVideo & $Autre & "(1)" & @CRLF
            Case 3
                $Output &= $ArchVideo & "CGA (3)" & @CRLF
            Case 4
                $Output &= $ArchVideo & "EGA (4)" & @CRLF
            Case 5
                $Output &= $ArchVideo & "VGA (5)" & @CRLF
            Case 6
                $Output &= $ArchVideo & "SVGA (6)" & @CRLF
            Case 7
                $Output &= $ArchVideo & "MDA (7)" & @CRLF
            Case 8
                $Output &= $ArchVideo & "HGC (8)" & @CRLF
            Case 9
                $Output &= $ArchVideo & "MCGA (9)" & @CRLF
            Case 10
                $Output &= $ArchVideo & "8514A (10)" & @CRLF
            Case 11
                $Output &= $ArchVideo & "XGA (11)" & @CRLF
            Case 12
                $Output &= $ArchVideo & "Linear Frame Buffer (12)" & @CRLF
            Case 160
                $Output &= $ArchVideo & "PC-98 (160)" & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_VideoArchitecture

Func _AcceleratorCapabilities()
    _WinClassesVideoController()
    For $objItem In $colItems
        Local $strAcceleratorCapabilities = $objItem.AcceleratorCapabilities
        Switch $strAcceleratorCapabilities
            Case 0
                $Output &= $ControlVideo & $Inconnu & "(0)" & @CRLF
            Case 1
                $Output &= $ControlVideo & $Autre & "(1)" & @CRLF
            Case 2
                $Output &= $ControlVideo & $AccelerateurGraph & "(2)" & @CRLF
            Case 3
                $Output &= $ControlVideo & $Accelerateur3D & "(3)" & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_AcceleratorCapabilities

Func _Availability()
    _WinClassesVideoController()
    For $objItem In $colItems
        Local $Availability = $objItem.Availability
        Switch $Availability
            Case 1
                $Output &= $DispoVideoControl & $Inconnu & "(1)" & @CRLF
            Case 2
                $Output &= $DispoVideoControl & $Autre & "(2)" & @CRLF
            Case 3
                $Output &= $DispoVideoControl & $Availability3 & @CRLF
            Case 4
                $Output &= $DispoVideoControl & $Availability4 & @CRLF
            Case 5
                $Output &= $DispoVideoControl & $Availability5 & @CRLF
            Case 6
                $Output &= $DispoVideoControl & $Availability6 & @CRLF
            Case 7
                $Output &= $DispoVideoControl & $Availability7 & @CRLF
            Case 8
                $Output &= $DispoVideoControl & $Availability8 & @CRLF
            Case 9
                $Output &= $DispoVideoControl & $Availability9 & @CRLF
            Case 10
                $Output &= $DispoVideoControl & $Availability10 & @CRLF
            Case 11
                $Output &= $DispoVideoControl & $Availability11 & @CRLF
            Case 12
                $Output &= $DispoVideoControl & $Availability12 & @CRLF
            Case 13
                $Output &= $DispoVideoControl & $Availability13 & @CRLF
            Case 14
                $Output &= $DispoVideoControl & $Availability14 & @CRLF
            Case 15
                $Output &= $DispoVideoControl & $Availability15 & @CRLF
            Case 16
                $Output &= $DispoVideoControl & $Availability16 & @CRLF
            Case 17
                $Output &= $DispoVideoControl & $Availability17 & @CRLF
            Case 18
                $Output &= $DispoVideoControl & $Availability18 & @CRLF
            Case 19
                $Output &= $DispoVideoControl & $Availability19 & @CRLF
            Case 20
                $Output &= $DispoVideoControl & $Availability20 & @CRLF
            Case 21
                $Output &= $DispoVideoControl & $Availability21 & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_Availability

Func _VideoMemoryType()
    _WinClassesVideoController()
    For $objItem In $colItems
        Local $VideoMemType = $objItem.VideoMemoryType
        Switch $VideoMemType
            Case 1
                $Output &= $VideoMemoryType & $Autre & "(1)" & @CRLF
            Case 2
                $Output &= $VideoMemoryType & $Inconnu & @CRLF
            Case 3
                $Output &= $VideoMemoryType & "VRAM (3)" & @CRLF
            Case 4
                $Output &= $VideoMemoryType & "DRAM (4)" & @CRLF
            Case 5
                $Output &= $VideoMemoryType & "SRAM (5)" & @CRLF
            Case 6
                $Output &= $VideoMemoryType & "WRAM (6)" & @CRLF
            Case 7
                $Output &= $VideoMemoryType & "EDO RAM (7)" & @CRLF
            Case 8
                $Output &= $VideoMemoryType & "Burst Synchronous DRAM (8)" & @CRLF
            Case 9
                $Output &= $VideoMemoryType & "Pipelined Burst SRAM (9)" & @CRLF
            Case 10
                $Output &= $VideoMemoryType & "CDRAM (10)" & @CRLF
            Case 11
                $Output &= $VideoMemoryType & "3DRAM (11)" & @CRLF
            Case 12
                $Output &= $VideoMemoryType & "SDRAM (12)" & @CRLF
            Case 13
                $Output &= $VideoMemoryType & "SGRAM (13)" & @CRLF
        EndSwitch
    Next
EndFunc   ;==>_VideoMemoryType

Func _ConfigVideoUser()
    _WinClassesVideoController()
    For $objItem In $colItems
        Local $ConfigManagerUserConfig = $objItem.ConfigManagerUserConfig
        If $ConfigManagerUserConfig = False Then
            $Output &= $ConfigUserVideo & $False & @CRLF
        Else
            $Output &= $ConfigUserVideo & $True & @CRLF
        EndIf
    Next
EndFunc   ;==>_ConfigVideoUser

Func _ConfigManagerErrorCode()
    _WinClassesVideoController()
    For $objItem In $colItems
        Local $ErrorCode = $objItem.ConfigManagerErrorCode
        Switch $ErrorCode
            Case 0
                $Output &= $CMECWIN32 & $CMEC0
            Case 1
                $Output &= $CMECWIN32 & $CMEC1
            Case 2
                $Output &= $CMECWIN32 & $CMEC2
            Case 3
                $Output &= $CMECWIN32 & $CMEC3
            Case 4
                $Output &= $CMECWIN32 & $CMEC4
            Case 5
                $Output &= $CMECWIN32 & $CMEC5
            Case 6
                $Output &= $CMECWIN32 & $CMEC6
            Case 7
                $Output &= $CMECWIN32 & $CMEC7
            Case 8
                $Output &= $CMECWIN32 & $CMEC8
            Case 9
                $Output &= $CMECWIN32 & $CMEC9
            Case 10
                $Output &= $CMECWIN32 & $CMEC10
            Case 11
                $Output &= $CMECWIN32 & $CMEC11
            Case 12
                $Output &= $CMECWIN32 & $CMEC12
            Case 13
                $Output &= $CMECWIN32 & $CMEC13
            Case 14
                $Output &= $CMECWIN32 & $CMEC14
            Case 15
                $Output &= $CMECWIN32 & $CMEC15
            Case 16
                $Output &= $CMECWIN32 & $CMEC16
            Case 17
                $Output &= $CMECWIN32 & $CMEC17
            Case 18
                $Output &= $CMECWIN32 & $CMEC18
            Case 19
                $Output &= $CMECWIN32 & $CMEC19
            Case 20
                $Output &= $CMECWIN32 & $CMEC20
            Case 21
                $Output &= $CMECWIN32 & $CMEC21
            Case 22
                $Output &= $CMECWIN32 & $CMEC22
            Case 23
                $Output &= $CMECWIN32 & $CMEC23
            Case 24
                $Output &= $CMECWIN32 & $CMEC24
            Case 25
                $Output &= $CMECWIN32 & $CMEC25
            Case 26
                $Output &= $CMECWIN32 & $CMEC26
            Case 27
                $Output &= $CMECWIN32 & $CMEC27
            Case 28
                $Output &= $CMECWIN32 & $CMEC28
            Case 29
                $Output &= $CMECWIN32 & $CMEC29
            Case 30
                $Output &= $CMECWIN32 & $CMEC30
            Case 31
                $Output &= $CMECWIN32 & $CMEC31
        EndSwitch
    Next
EndFunc   ;==>_ConfigManagerErrorCode

 

Thank for your opignon.

 
 
Edited by Amesam

Share this post


Link to post
Share on other sites



@Amesam What does this provide that Script-o-matic does not? In fact, at brief glance it appears the functions are almost word for word the same.


When you're dead, you don't know you're dead - it's only difficult for those that know you. It's the same way when you're stupid...

My Scripts: SCCM UDFInclude Source with Compiled Script, Windows Firewall UDF

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Thank you for the advice

Yes use script-o-matic for the construction of the UDF
What is missing is the détail for example the characteristics of Bios Script-o-matic on my PC (7)
By doing so i search all values.
 
Example :
 
2016-05-09_180554.png.ebaf9a92affae5756b
 

So it is more comprehensive

Is it a mistake ?

Thank :)

 

 

Edited by Amesam

Share this post


Link to post
Share on other sites

Not a mistake, just thought it would help your post if you expand on what your script does that Script-o-matic does not.


When you're dead, you don't know you're dead - it's only difficult for those that know you. It's the same way when you're stupid...

My Scripts: SCCM UDFInclude Source with Compiled Script, Windows Firewall UDF

Share this post


Link to post
Share on other sites

Just Yes, :)

edited message

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now