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

API, COM et SDKs Delphi Discussion :

Température du processeur


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut Température du processeur
    Bonjour tout le monde !

    Voilà, voulant faire quelques stats avec la température de mon processeur je désire créer un petit programme sous Delphi pour faire ces stats ...

    Après plusieurs recherches sur le net et notamment sur ce forum je suis tombé sur de nombreux liens :
    - http://laurent-dardenne.developpez.com/articles/wmi-p2/
    - http://msdn.microsoft.com/library/de...atureprobe.asp
    - http://www.developpez.net/forums/sho...d.php?t=157925
    - http://www.developpez.net/forums/showthread.php?t=7770

    Bon, tout ça est un peu complexe mais j'ai réussi à créer un début de programme grâce aux exemples de Laurent Dardenne (que je remercie pour son aide)

    Voilà ce que ça donne grossièrement :
    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
    28
    29
    var
      WMILocator:          TSWbemLocator;
      WmiService:          SWbemServices;
     
       WClass:           SWbemObject;
      WInParameters:        SWbemObjectSet;
     
    Enum:    IEnumVariant;
     
    begin
      WMILocator:= TSWbemLocator.Create(self);
     try
       // Création d'une connexion à un espace de nom local
       // ici le nom de l'espace de nom cible est : CIMV2
       // L'appel renvoie un pointeur sur un objet SWbemServices
       WmiService:= WMILocator.ConnectServer('.', 'ROOT\CIMV2', '', '', '',
                                             '', wbemConnectFlagUseMaxWait, nil);
     
      WClass := WmiService.Get('Win32_TemperatureProbe', wbemFlagUseAmendedQualifiers, nil);
     
      WInParameters := WClass.Instances_(0, nil);
      Enum := (WInParameters._NewEnum) as IEnumVariant;
     
      Label1.Caption := WClass.Properties_.Item('Caption',0).Get_Value);
     
     Finally
      WMILocator.Free;
     end;
    end;
    Malheureusement j'ai un joli message d'erreur qui me rappelle que la valeur renvoyé par WClass.Properties_.Item('Caption',0).Get_Value) n'est pas un string ...

    Donc je demande votre aide, pour récupérer mon info, car je mixe des codes et ça n'a pas l'air de vraiment fonctionne ...

    Merci d'avance

  2. #2
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut
    Je viens également de tester ça :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    var
      WMILocator:          TSWbemLocator;
      WmiService:          SWbemServices;
     
      WmiObject, WClass:           SWbemObject;
      wmiObjectSet, WInParameters:        SWbemObjectSet;
     
      WmiProperty:         SWbemProperty;
      WmiPropertySet:      SWbemPropertySet;
     
      PropertyEnumerator,
      ObjectEnumerator, Enum:    IEnumVariant;
      ArrayVariant:        OleVariant;  // Tableau de variant
      NumberItem:          LongWord;
     
    begin
      WMILocator:= TSWbemLocator.Create(self);
     try
       // Création d'une connexion à un espace de nom local
       // ici le nom de l'espace de nom cible est : CIMV2
       // L'appel renvoie un pointeur sur un objet SWbemServices
       WmiService:= WMILocator.ConnectServer('.', 'ROOT\CIMV2', '', '', '',
                                             '', wbemConnectFlagUseMaxWait, nil);
     
       // Retrouve la collection d'instance de la classe Win32_Service
       // de l'espace de nom courant
        wmiObjectSet := wmiService.InstancesOf('Win32_TemperatureProbe',
                                                 wbemFlagReturnWhenComplete,
                                                 nil);
     
       // Affecte un énumérateur pour la collection d'objet SWbemObject
      ObjectEnumerator:= (WmiObjectSet._NewEnum) as IEnumVariant;
     
        // Retourne NumberItem éléments dans le tableau ArrayVariant,
        // ici 1 élément est demandé
      while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK) do
      begin
          // Récupére de la collection l'objet SWbemObject courant
       WmiObject := IUnknown(ArrayVariant) as SWBemObject;
     
          // Retrouve la propriétés de l'instance au format MOF
       Memo1.Lines.Add(AdjustLineBreaks(wmiObject.GetObjectText_(0)));
      end;
     
     Finally
      WMILocator.Free;
     end;
    end;
    Mais ça ne va jamais plus loin que while (ObjectEnumerator.Next(1, ArrayVariant, NumberItem) = S_OK)

    En clair la condition est toujours fausse ...

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    pour cette classe il me semble qu'elle pose pb, soit elle n'est implémentée soit elle dépend du BIOS de la CM.
    Most of the information that the Win32_TemperatureProbe WMI class provides comes from SMBIOS. Real-time readings for the CurrentReading property cannot be extracted from SMBIOS tables. For this reason, current implementations of WMI do not populate the CurrentReading property. The CurrentReading property's presence is reserved for future use.
    Dans cas il est préférable d'utiliser les outils de MS pour vérifier si un code "basic" renvoie qq chose.
    par exemple avec les tools WMI ...\WMI Tools\studio.htm ( Recherche la classe puis demander les instances )
    ou avec VBS factory (http://www.astase.com/) le script suivant fournis sur MSDN(http://msdn.microsoft.com/library/de...atureprobe.asp)

    strComputer = "."
    Set colTempProbe = GetObject("Winmgmts:"_
    & "{impersonationLevel=impersonate}!\\"_
    & strComputer & "\root\cimv2")._
    InstancesOf("Win32_TemperatureProbe")
    Num = 0
    For Each obj In colTempProbe
    WScript.Echo obj.Name & VBNewLine _
    & obj.DeviceID & VBNewLine _
    & obj.Status & VBNewLine _
    & obj.Resolution & VBNewLine _
    & obj.Tolerance & VBNewLine _
    & obj.Accuracy
    Num = Num +1
    Next
    If Num = 0 Then
    WScript.Echo "No temperature probe data"
    End If
    Sur ma machine, la premiére renvoi "No Instances Available" et la seconde "No temperature probe data" mais je ne me souviens plus si j'ai installé un capteur

    Si une de ces 2 approches te renvoient qq chose on creusera coté Delphi...
    Regarde les compo Mitec (http://delphi.developpez.com/freewar...sants/#Systeme)

    WMI fournis énormément d'informations mais pas toutes hélas enfin c'est déjà mieux que de coder les appels smbios

  4. #4
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut
    Alors, avec VBS factory ça me renvoie pareil : No temperature probe data
    Et je ne sais pas comment utiliser les WMi Tools donc je n'ai pas pu utilisé la première solution
    Donc je crois que de ce côté là c'est mort ... :'(

    Je vais essayé de voir du côté de Mitec j'ai cru voir Temperature Probe dans un des screens, mais c'est pas gagné ...

    Sinon il n'y a pas un moyen d'avoir la température en fonction de ma sonde ? Vu que je sais quel type c'est.

    Ou alors, n'existe il pas un logiciel qui permet d'enregistrer la température à interval régulier dans un fichier pour que je puisse faire des stats dessus ?

    EDIT : j'ai dl ROM Bios explorer et dans Temperature Probe il n'y a rien ...
    Donc je pense que je dois me tourner vers la reception des données de ma sonde ou un logiciel qui me fournit ce que je veux

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par K20
    Donc je crois que de ce côté là c'est mort ... :'(
    Je pense aussi, vérifie sur les news groups MS
    http://msdn.microsoft.com/newsgroups/default.aspx
    il y a un forum dédié à WMI.

  6. #6
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut
    J'ai peut être trouvé une dernière solution, mais mon logiciel ne fonctionnera pas sur tous les PC ...

    Apparament il existe une dll faite par Asus pour obtenir ce genre d'informations. Je vais la trouver et essayer de m'en servir avec Delphi ... Sinon je ne vois pas comment faire

    Je vais aussi voir du côté des newsgroup, merci

  7. #7
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut
    Bon et bien j'ai peur de ne pas réussir
    J'ai essayé avec la dll d'Asus et j'ai plein d'erreur me disant qu'il arrive pas à charger un fichier alors qu'il y ai ...
    http://www.developpez.net/forums/sho...d.php?t=171060

    Sinon dernière piste, j'ai lu qu'on pouvait récupérer cette info via la mémoire, mais alors là, aucune idée de comment faire

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Evite de croiser les discussions, ça frise le multipost
    Faut faire un choix, à mon avis le mieux est de placer celui-ci en résolu.

  9. #9
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut
    Ba en fait ce n'est pas le même problème
    L'autre au début c'était un problème de dll, celui-ci une méthode pour obtenir une information.
    Mais si y aucune autre solution pour récupérer la température, alors oui ce topic est réglé.

  10. #10
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    tu devrais faire un tour ici : http://www.samurize.com/modules/ipboard/
    ya des fous furieux de la prog qui passent leurs temps a faire des plugins pour samurize qui sert a recuperer toute sorte d'infos sur ton PC

    c'est plutot le C et C++ mais yen a qui connaissent Delphi ... c'est d'ailleurs a cause de ce programme que je me suis mis a Delphi

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par K20
    Ba en fait ce n'est pas le même problème
    ok, excuse moi je me suis trompé.

  12. #12
    K20
    K20 est déconnecté
    Membre confirmé
    Profil pro
    Ingé DevOps
    Inscrit en
    Novembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Ingé DevOps

    Informations forums :
    Inscription : Novembre 2005
    Messages : 183
    Par défaut
    @ Lorenzo77 : ok je vais allé jeter un coup d'oeil

    @ Laurent : il n'y a pas de mal

    Donc si j'ai bien compris, il n'y a pas d'autre(s) méthode(s) pour récupérer la température de mon processeur ?

    EDIT : ok je suis allé voir Samurize c'est bien sympa
    D'après toi, y aurais-t-il un moyen simple pour écrire dans un fichier la température récupéré par le plug-in ?

Discussions similaires

  1. Comment connaître la température du processeur via SNMP?
    Par SkyDev dans le forum Administration système
    Réponses: 5
    Dernier message: 08/03/2007, 13h26
  2. Réponses: 11
    Dernier message: 09/06/2006, 15h10
  3. Reprendre la température du processeur
    Par ehmppowa dans le forum C++
    Réponses: 2
    Dernier message: 23/12/2005, 10h07
  4. Température du processeur
    Par duplo dans le forum Assembleur
    Réponses: 2
    Dernier message: 04/11/2005, 21h44
  5. Récupérer la température du processeur (CPU)
    Par cyber_N dans le forum MFC
    Réponses: 4
    Dernier message: 05/09/2005, 18h27

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