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

Langage Delphi Discussion :

Erreur avec GetWMIstring


Sujet :

Langage Delphi

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut Erreur avec GetWMIstring
    Bonjour !

    Delphi 2010 et windows 8.

    J'ai récupéré ce bout de code qui m'a l'air sympa mais qui affiche une erreur à son exécution

    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
    20
    21
    22
    23
    function GetWMIstring(const WMIClass, WMIProperty:string): string;
    const
      wbemFlagForwardOnly = $00000020;
    var
      FWbemObjectSet: OLEVariant;
      FWbemObject   : OLEVariant;
      oEnum         : IEnumvariant;
      iValue        : LongWord;
    begin;
      Result:='';
     
      try
        FWbemObjectSet := FWMIService.ExecQuery(Format('Select %s from %s',
                        [WMIProperty, WMIClass]),'WQL',wbemFlagForwardOnly);
        oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      except
        Showmessage('erreur');
        Exit;
      end;
      if oEnum.Next(1, FWbemObject, iValue) = 0 then
        if not VarIsNull(FWbemObject.Properties_.Item(WMIProperty).Value) then
          Result:=FWbemObject.Properties_.Item(WMIProperty).Value;
      FWbemObject := Unassigned;
    Quelqu'un a t-il déjà essayer d'accéder aux info de la WMI avec delphi ?

    Merci par avance.

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Bonjour

    A quel niveau est l'erreur ?

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Quelqu'un a t-il déjà essayer d'accéder aux info de la WMI avec delphi ?
    Il y a même une toute petite FAQ Accueil / Delphi / FAQs / FAQ Delphi / Introduction à WMI

    Aurais-tu les paramètres pour que l'on reproduise ?
    Aurais-tu la classe d'exception et probablement un code erreur HRESULT ?

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message

    Aurais-tu la classe d'exception et probablement un code erreur HRESULT ?
    la classe d'exception je viens de la trouver, voici le nouveau code aménagé

    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
    20
    21
    22
    23
    24
    25
    26
    27
    function GetWMIstring(const WMIClass, WMIProperty:string): string;
    const
      wbemFlagForwardOnly = $00000020;
    var
      FWbemObjectSet: OLEVariant;
      FWbemObject   : OLEVariant;
      oEnum         : IEnumvariant;
      iValue        : LongWord;
    begin;
      Result:='';
     
      try
        FWbemObjectSet := FWMIService.ExecQuery(Format('Select %s from %s',
                        [WMIProperty, WMIClass]),'WQL',wbemFlagForwardOnly);
        oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
      except
        on E : EOleSysError do
        begin
          Showmessage(Format('Message %s', [E.Message]));
          Exit;
        end;
      end;
      if oEnum.Next(1, FWbemObject, iValue) = 0 then
        if not VarIsNull(FWbemObject.Properties_.Item(WMIProperty).Value) then
          Result:=FWbemObject.Properties_.Item(WMIProperty).Value;
      FWbemObject := Unassigned;
    end;
    L'erreur que j'obtiens à l'exécution est :
    Opération de variant incorrecte

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Vous passez quoi en paramètres WMIClass, WMIProperty ?

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par fbalien Voir le message
    Vous passez quoi en paramètres WMIClass, WMIProperty ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var FSWbemLocator, FWMIService : OLEVariant;
    .
    .
    .
     
      FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
      FWMIService   := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', '');
     
      x := GetWMIstring('Win32_BIOS','SerialNumber');
      y := GetWMIstring('Win32_PhysicalMedia','SerialNumber');
     
      ShowMessage(x+';'+y);

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 108
    Points : 41 225
    Points
    41 225
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    pour l'utilisation des WMI, je ne me casse plus la tête, j'utilise WMI Delphi code Creator, 'un must have'

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Bonjour

    je viens de tester votre code et cela fonctionne
    - Delphi Seattle
    - Windows 7
    - Ordinateur HP

    a quel ligne cela plante ?
    en utilisant WMICodeCreator vous avez un résultat sur les requêtes ?

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    SergioMaster merci pour ce lien vers ce super outils

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par fbalien Voir le message
    Bonjour

    je viens de tester votre code et cela fonctionne
    - Delphi Seattle
    - Windows 7
    - Ordinateur HP

    a quel ligne cela plante ?
    en utilisant WMICodeCreator vous avez un résultat sur les requêtes ?
    sur la 1ère ligne !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    La couche WMI est bien fonctionnel sur votre PC ?

  12. #12
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par fbalien Voir le message
    La couche WMI est bien fonctionnel sur votre PC ?
    Que voulez-vous dire par fonctionnel ?

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262

  14. #14
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Bonjour

    pour être sur que la couche WMI soit ok
    1- le service doit être démarré (winmgmt ou "Infrastructure de gestion Windows" dans un windows seven en Français)
    2- Ouvrir Gestion de l'ordinateur demarrer -> executer -> compmgmt.msc
    3- Déplier Service et applications
    4- Clic Gauche sur Contrôle WMI
    5- Clic Droit sur Contrôle WMI -> Propiété
    6- une fenêtre doit s'ouvrir et dans l'onglet générale il devrait y avoir les information de base qui s'affichent (Processeur , système d'exploitation .....)
    7- Si les info ne s'affiche pas il faut réparer la couche WMI
    - Dans une invite de commande en mode admin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       Cd C:\Windows\System32\wbem <entrée>
       net stop ccmexec /y <entrée>
       net stop sharedaccess /y <entrée>
       net stop winmgmt /y <entrée>
       Ren Repository repository_old <entrée>
       net start winmgmt /y <entrée>
       for /f %s in ('dir /b *.mof') do mofcomp %s <entrée>
       for /f %s in ('dir /b en-us\*.mfl') do mofcomp en-us\%s <entrée>

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 108
    Points : 41 225
    Points
    41 225
    Billets dans le blog
    63
    Par défaut
    Citation Envoyé par fbalien Voir le message
    pour être sur que la couche WMI soit ok ...
    ou faire un test avec WMI Delphi Code Creator

  16. #16
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    ou faire un test avec WMI Delphi Code Creator
    Merci à tous pour les réponses ...

    Oui c'est ce que j'ai fait Serge mais même avec WMI Delphi Code Creator j'ai cette créature (erreur) !!!

  17. #17
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2003
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2003
    Messages : 167
    Points : 208
    Points
    208
    Par défaut
    Bonjour

    Vous avez tenté la réparation (point 7 de mon message)

  18. #18
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par fbalien Voir le message
    Bonjour

    Vous avez tenté la réparation (point 7 de mon message)
    Je viens de le faire à l'instant même ... mais toujours la même erreur

  19. #19
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 108
    Points : 41 225
    Points
    41 225
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    s'agirait-il alors d'une question de Droits ? (tester en mode administrateur) ou d'antivirus ?

  20. #20
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    s'agirait-il alors d'une question de Droits ? (tester en mode administrateur) ou d'antivirus ?
    de droit je ne crois pas car j'ai fait le test en mode admin

    antivirus je ne vois pas trop le lien avec le message d'erreur 'impossible de convertir *****' mais je vais désactiver mon antivirus et voir sait-on jamais !

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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