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

Lazarus Pascal Discussion :

Comment recupérer le contenu des fonctions ou variables WMI ? [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 74
    Points : 69
    Points
    69
    Par défaut Comment recupérer le contenu des fonctions ou variables WMI ?
    Bonjour,

    Je possède Delphi 7 et ayant eu du mal à le faire fonctionner avec win 8, j'étais passé sur Lazarus.
    Récemment, j'ai retenté l'installation en mode administrateur comme conseillé et ça marche. Suite au tutoriel de Laurent Dardenne, j'ai tenté d'importer l'activeX Wbemdisp.tlb, mais cela ne me donne rien de plus dans les outils de Delphi.
    Alors je suis de nouveau reparti vers Lazarus.
    J'ai trouvé à cette adresse (https://github.com/rruz/tsmbios) des exemples de code Lazarus qui fonctionnent mais seulement en mode console et je ne sais pas comment récupérer les valeurs dans dans un mémo par exemple.

    Merci à celui qui pourrait m'éclairer ?

    Michel Suire
    j'aimerai savoir ...

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 795
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 795
    Points : 15 208
    Points
    15 208
    Par défaut
    Citation Envoyé par msuire Voir le message
    et je ne sais pas comment récupérer les valeurs dans un mémo par exemple.
    Si je devais faire, je remplacerais tous les "WriteLn" par des "memo.Lines.Add()" mais attention, il y a une petite adaptation à faire à chaque ligne.

    Exemple avec deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            WriteLn(Format('Size           %d Mbytes',[LMemoryDevice.GetSize]));
            WriteLn(Format('Device Locator %s',[LMemoryDevice.GetDeviceLocatorStr]));
    vont devenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            memo.Lines.Add('Size ' + IntToStr(LMemoryDevice.GetSize) +' Mbytes');
            memo.Lines.Add('Device Locator ' + LMemoryDevice.GetDeviceLocatorStr);
    Y a p'têt' moyen de garder le "Format" mais j'ai un peu la flemme de chercher/tester (fait trop chaud...)
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 985
    Points : 9 359
    Points
    9 359
    Par défaut
    hello,
    le code que tu nous présentes n'est pas du WMI. Quelles infos veux-tu récupérer ? Il y a moyen de faire du WMI assez simplement en Lazarus.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 74
    Points : 69
    Points
    69
    Par défaut
    Bonjour Jurassik,

    Je ne suis qu'un amateur en terme de programmation et je pensai que les exemples de code de https://github.com/rruz/tsmbios étaient basé sur le WMI.
    En fait, je voudrai récupérer les adresse MAC wifi et Ethernet, la marque de la carte mère et le numéro de série, les caractéristiques des disque durs... Si j'ai une piste pour ces éléments ce serait déjà pas mal.
    Concernant la proposition de JiPeTe, j'avais déjà essayé cette solution, mais sans grand succès...

    Merci pour votre implication.

    Michel Suire
    j'aimerai savoir ...

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 985
    Points : 9 359
    Points
    9 359
    Par défaut
    hello,
    je mets en pièce jointe une unité (utilwmi.pas) avec une fonction expérimentale ( elle est brute de fonderie et contient certainement des bugs) qui permet de récupérer des informations par WMI sous windows. Voici la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Function GetWMIInfo(const WMIClass: string ; const WMIProperty:tstringList;
                         const Condition: string = ''): Tlist
    le paramètre WMIClass est la classe WMI à inspecter exemple : Win32_NetworkAdapter
    le paramètre WMIProperty est la liste des propriétés à récupérer exemple : Name, MacAddress
    le paramètre conditionnel condition est la condition de sélection des propriétés exemple : WHERE NETENABLED = TRUE

    le résultat est une liste de listes des propriétés.

    Voici un exemple d'utilisation qui affiche dans un mémo les noms et mac addresses des cartes réseaux actives :
    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
    procedure TForm1.Button3Click(Sender: TObject);
    var ResultatWMI : TList;
        Infos : TStringList;
      i,j       : Integer;
    begin
      Memo1.Clear;
      Infos := TstringList.Create;
      // Préparation des paramètres à chercher
      Infos.CommaText:='Name=,ProductName=,MACAddress=';
      ResultatWMI := GetWMIInfo('Win32_NetworkAdapter',Infos,'WHERE NETENABLED = TRUE');
       for i := 0 to ResultatWMI.Count-1 do
        begin
         Memo1.Lines.add('================================================');
         for j := 0 to Infos.Count-1 do
             begin
             Memo1.Lines.add(TstringList(ResultatWMI[i]).Names[j]+' : '+
             TstringList (ResultatWMI[i]).ValueFromIndex[j]);
             end;
        end;
      // Nettoyage
        for i := 0 to ResultatWMI.Count-1 do
             begin
               TstringList(ResultatWMI[i]).Free;
             end;
    Mettre l'unité dans le répertoire de son projet et rajouter l'unité dans le uses.
    Si vous voyez des corrections ou des améliorations à faire n'hésitez pas à me le dire.



    Ami calmant, J.P
    Fichiers attachés Fichiers attachés
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 795
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 795
    Points : 15 208
    Points
    15 208
    Par défaut
    Citation Envoyé par msuire Voir le message
    Concernant la proposition de JiPeTe, j'avais déjà essayé cette solution, mais sans grand succès...
    Sans grand succès...

    Ouaip, ça c'est du lourd et de la haute précision dans le genre description du problème...
    Tu ne nous aides pas à t'aider, là !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre du Club
    Profil pro
    Retraité
    Inscrit en
    Avril 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2004
    Messages : 74
    Points : 69
    Points
    69
    Par défaut
    Re-bonjour Jurassik,

    Je rentre du boulot et je viens de tester ce que tu proposes. C'est parfait: les résultats sont là et même si je n'ai pas encore tout compris, je m'attèle à la tâche. Ne serait-ce que par respect de ton engagement.

    Merci et à +

    Michel Suire
    j'aimerai savoir ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2007, 11h01
  2. Réponses: 9
    Dernier message: 24/05/2005, 16h34
  3. Comment séparer le contenu des pages de leur structure?
    Par djodjo dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 06/05/2005, 14h48

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