IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Recuperer numéro de série écran PC en WMI


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Décembre 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Recuperer numéro de série écran PC en WMI
    Bonjour à tous,
    J'ai besoin de vos lumières car je souhaiterai récupérer les numéros de série des écrans connectés à un ordinateur. Pour ce faire j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    objLocator est un objet Automation "WbemScripting.SWbemLocator"
    objService est un objet Automation dynamique
    display est un objet Automation dynamique
     
    objService = objLocator>>ConnectServer(".", "root\wmi")
    objService>>Security_>>ImpersonationLevel = 3 
    display = objService>>ExecQuery("select * from WmiMonitorID")
    	POUR x = 0 _A_ display>>Count -1 
    	      Trace(display>>ItemIndex(x)>>Properties_>>Item("SerialNumberID[]")>>Value)
    	FIN
    libérer display
    libérer objService
    Malheureusement ça me renvoi une erreur :
    Vous avez appelé la méthode Automation 'Item'.
    En tentant d'invoquer la méthode <Item> ou de lire la propriété <Item>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80041002 : Non trouvé '
    En tentant d'invoquer la méthode <Item>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80041002 : Non trouvé '
    En tentant de lire la propriété <Item>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80020003, Le membre demandé n'existe pas'
    En tentant d'écrire la propriété <Item>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80020003, Le membre demandé n'existe pas'
    Je pense que le problème vient des [] après SerialNumberID mais je ne sais pas comment contourner le problème.
    Ce code fonctionne très bien avec les membres de la classe WmiMonitorID qui ne comporte pas les [] comme WeekOfManufacture et YearOfManufacture par exemple.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 951
    Points : 9 280
    Points
    9 280
    Par défaut
    hello,
    Il faut mettre seulement SerialNumberID et l'élément renvoyé est un tableau de variants.
    Tu peux faire comme ceci pour récupérer le numéro de série du moniteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    objLocator est un objet Automation "WbemScripting.SWbemLocator"
    objService est un objet Automation dynamique
    display est un objet Automation dynamique
    TabSerialId est un tableau de  0 Variants
    MonSerialId est une chaîne
    objService = objLocator>>ConnectServer(".", "root\wmi")
    objService>>Security_>>ImpersonationLevel = 3 
    display = objService>>ExecQuery("select * from WmiMonitorID")
    POUR x = 0 _A_ display>>Count -1 
    TabSerialId = display>>ItemIndex(x)>>Properties_>>Item("SerialNumberID")>>Value
    FIN
    y est un entier = 1
    TANTQUE TabSerialId[y] <> 0 
    MonSerialId +=  Caract(TabSerialId[y])	
    y++
    FIN
    Trace (MonSerialId)
    libérer display
    libérer objService
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/05/2015, 16h48
  2. Numéro de série du disque dur
    Par h_kamel dans le forum Assembleur
    Réponses: 8
    Dernier message: 21/05/2007, 11h28
  3. Comment déterminer un numéro de série d'un processeur ?
    Par rarfaoui dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/07/2005, 10h36
  4. Génération de numéro de série
    Par shadeoner dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 06/04/2005, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo