AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte OPENHARDWAREMONITOR mit WMI

OPENHARDWAREMONITOR mit WMI

Ein Thema von hathor · begonnen am 14. Sep 2014 · letzter Beitrag vom 8. Jun 2017
Antwort Antwort
Seite 1 von 2  1 2   
hathor
Der OPENHARDWAREMONITOR mit WMI-Server stellt die Daten für weitere Verwendung zur Verfügung.
http://openhardwaremonitor.org/

Leider enthält er einige kleine Fehler, z.B. einige Bezeichnungen sind falsch...
Die Variable OHM : Boolean; hat in dieser DEMO keine Bedeutung.

Delphi-Quellcode:
unit Unit2; //2ß140914

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ActiveX, ComObj, Vcl.OleAuto;

type
  TForm2 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  OHM : Boolean;
const
  WbemUser =''; WbemPassword =''; WbemComputer ='localhost'; wbemFlagForwardOnly = $00000020;

implementation

{$R *.dfm}

procedure MM(s:string); begin Form2.Memo1.Lines.Add(s); end;

procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;

procedure GetSensorInfo;
var
  FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject : OLEVariant;
  oEnum : IEnumvariant; iValue : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService :=
  FSWbemLocator.ConnectServer(WbemComputer, 'root\OpenHardwareMonitor', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Sensor','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    MM(Format(' Identifier %s',[String(FWbemObject.Identifier)]));// String
    MM(Format(' Index %d',[Integer(FWbemObject.Index)]));// Sint32
    MM(Format(' InstanceId %s',[String(FWbemObject.InstanceId)]));// String
    MM(Format(' Max %n',[Double(FWbemObject.Max)]));// Real32
    MM(Format(' Min %n',[Double(FWbemObject.Min)]));// Real32
    MM(Format(' Name %s',[String(FWbemObject.Name)]));// String
    MM(Format(' Parent %s',[String(FWbemObject.Parent)]));// String
    MM(Format(' ProcessId %s',[String(FWbemObject.ProcessId)]));// String
    MM(Format(' SensorType %s',[String(FWbemObject.SensorType)]));// String
    MM(Format(' Value %n',[Double(FWbemObject.Value)]));// Real32
    MM('----------------------------------------------------------------------');
  end;
    FWbemObject:=Unassigned;
end;

procedure GetSensorCPUTEMP;
var
  FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject : OLEVariant;
  oEnum : IEnumvariant; iValue : LongWord;
begin;
  OHM:= false;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\OpenHardwareMonitor', WbemUser, WbemPassword);
 FWbemObjectSet:=
 FWMIService.ExecQuery('SELECT * FROM Sensor WHERE Name LIKE "%CPU %" AND SensorType = "Temperature"','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    MM(Format(' Name: %s',[String(FWbemObject.Name)]));// String
    MM(Format(' SensorType %s',[String(FWbemObject.SensorType)]));// String
    MM(Format(' Value: %n',[Double(FWbemObject.Value)]));// Real32
    MM('');
  end;
    OHM:= true;
    FWbemObject:=Unassigned;
end;

procedure GetSensorCPULOAD;
var
  FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject : OLEVariant;
  oEnum : IEnumvariant; iValue : LongWord;
begin;
  OHM:= false;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\OpenHardwareMonitor', WbemUser, WbemPassword);
 FWbemObjectSet:=
 FWMIService.ExecQuery('SELECT * FROM Sensor WHERE Name LIKE "%CPU %" AND SensorType = "Load"','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    MM(Format(' Name: %s',[String(FWbemObject.Name)]));// String
    MM(Format(' SensorType %s',[String(FWbemObject.SensorType)]));// String
    MM(Format(' Value: %n',[Double(FWbemObject.Value)]));// Real32
    MM('');
  end;
    OHM:= true;
    FWbemObject:=Unassigned;
end;

procedure GetSensorHDD;
var
  FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject : OLEVariant;
  oEnum : IEnumvariant; iValue : LongWord;
begin;
  OHM:= false;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService :=
  FSWbemLocator.ConnectServer(WbemComputer, 'root\OpenHardwareMonitor', WbemUser, WbemPassword);
  FWbemObjectSet:=
  FWMIService.ExecQuery('SELECT * FROM Sensor WHERE Name = "Temperature" AND SensorType = "Temperature"','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    MM(Format(' Name: %s',[String(FWbemObject.Name)]));// String
    MM(Format(' SensorType %s',[String(FWbemObject.SensorType)]));// String
    MM(Format(' Value: %n',[Double(FWbemObject.Value)]));// Real32
  end;
    OHM:= true;
    FWbemObject:=Unassigned;
end;

procedure GetSensorGPU;
var
  FSWbemLocator, FWMIService, FWbemObjectSet, FWbemObject : OLEVariant;
  oEnum : IEnumvariant; iValue : LongWord;
begin;
  OHM:= false;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService :=
  FSWbemLocator.ConnectServer(WbemComputer, 'root\OpenHardwareMonitor', WbemUser, WbemPassword);
 FWbemObjectSet:=
// FWMIService.ExecQuery('SELECT * FROM Sensor WHERE Name LIKE "%GPU Core%" AND SensorType = "Temperature"','WQL',wbemFlagForwardOnly);
// FWMIService.ExecQuery('SELECT * FROM Sensor WHERE Name LIKE "%GPU %" AND SensorType = "Temperature"','WQL',wbemFlagForwardOnly);
 FWMIService.ExecQuery('SELECT * FROM Sensor WHERE Name LIKE "%GPU %"','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    MM(Format(' Name: %s',[String(FWbemObject.Name)]));// String
    MM(Format(' SensorType %s',[String(FWbemObject.SensorType)]));// String
    MM(Format(' Value: %n',[Double(FWbemObject.Value)]));// Real32
    MM('');
  end;
    OHM:= true;
    FWbemObject:=Unassigned;
end;

procedure TForm2.Button2Click(Sender: TObject); //HDD
begin Memo1.Clear;
  GetSensorHDD;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin Memo1.Clear;
  GetSensorInfo;
end;

procedure TForm2.Button4Click(Sender: TObject);
begin Memo1.Clear;
   GetSensorGPU;
end;

procedure TForm2.Button5Click(Sender: TObject);
begin Memo1.Clear;
   GetSensorCPUTEMP;
end;

procedure TForm2.Button6Click(Sender: TObject);
begin Memo1.Clear;
   GetSensorCPULOAD;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Height:= Screen.Height-20;
Memo1.Height:= Screen.Height-80;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
Application.Title := 'OHM-2014';
  GetSensorInfo;
end;

end.
Tags:
CPU, GPU, HDD Temperaturen und sonstiges
Temperaturen lesen (CPU,HDD...)
Miniaturansicht angehängter Grafiken
ohm-2014.jpg  
Angehängte Dateien
Dateityp: zip OHM-20140913.zip (718,0 KB, 178x aufgerufen)

Geändert von hathor (14. Sep 2014 um 10:18 Uhr)
 
hathor
 
#2
  Alt 14. Sep 2014, 00:19
Zitat:
The Open Hardware Monitor is a free open source software that monitors temperature sensors, fan speeds, voltages, load and clock speeds of a computer.
The Open Hardware Monitor supports most hardware monitoring chips found on todays mainboards. The CPU temperature can be monitored by reading the core temperature sensors of Intel and AMD processors. The sensors of ATI and Nvidia video cards as well as SMART hard drive temperature can be displayed. The monitored values can be displayed in the main window, in a customizable desktop gadget, or in the system tray. The free Open Hardware Monitor software runs on 32-bit and 64-bit Microsoft Windows XP / Vista / 7 and any x86 based Linux operating systems without installation.

Geändert von hathor (14. Sep 2014 um 10:17 Uhr)
  Mit Zitat antworten Zitat
hathor
 
#3
  Alt 14. Sep 2014, 10:07
Paul Werelds hat 2012 die Entwicklung eingestellt.
Tim Koers, Michael Möller und andere entwickeln weiter:
Hier gibt es die Version 0.6.1:
https://github.com/timkoers/OpenHardwareMonitor

https://github.com/timkoers/OpenHard...ive/master.zip
  Mit Zitat antworten Zitat
hathor
 
#4
  Alt 20. Feb 2015, 08:53
Release version 0.7.1
Author: moel.mich = Michael Möller
Date: Dec 30, 2014
http://openhardwaremonitor.org/downloads/
http://openhardwaremonitor.org/files...0.7.1-beta.zip

Geändert von hathor (20. Feb 2015 um 12:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

 
Delphi XE Starter
 
#5
  Alt 6. Jun 2017, 09:59
Hallo
Betriebssystem Windows 10
Ich weiß das ist schon ein altes Thema.
Ich habe mich ein wenig in WMI eingearbeitet und weiß so ungefähr was das ist.
Ich möchte die Sensoren vom Mainboards auslesen und bin auf diesen Post gestoßen.
Ich habe das Problem das mein
oEnum.Next(1, FWbemObject, iValue) ungleich null ist

also keine Werte ausgegeben werden.
Auch wenn ich Delphi unter Admin Rechte starte.

Hat jemand eine Idee ??

Ich habe erst die openhardwaremonitor-v0.8.0-beta benutzt
und nun die
openhardwaremonitor-v0.7.1-beta
Leider ohne Erfolg.
Martin MIchael

Geändert von ATS3788 ( 6. Jun 2017 um 10:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

 
Delphi XE Starter
 
#6
  Alt 6. Jun 2017, 10:11
Ach ja bevor ich das vergesse
Auf
https://wmie.codeplex.com/
gibt es einen Super WMI Explorer,
der hat mir gut geholfen
und das ist auch toll zum Thema WMI
https://github.com/RRUZ/delphi-wmi-class-generator
Martin Michael
Martin MIchael
  Mit Zitat antworten Zitat
Towmuz

 
Delphi 10.1 Berlin Professional
 
#7
  Alt 6. Jun 2017, 11:12
Hoi,

bin mir da nu nicht ganz sicher, aber meines Wissens nach, muss dein Motherboardhersteller auch eine Schnittstelle zur WMI bereitstellen, sonst kannst du da nichts auslesen.

Vieleicht ist das hier was für dich (auch von RRUZ):
https://theroadtodelphi.com/2013/02/...ucing-tsmbios/
http://www.dmtf.org/standards/smbios Seite 112 gehts los :p
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

 
Delphi XE Starter
 
#8
  Alt 6. Jun 2017, 11:52
Also , für die Version 0.7.1
habe ich es zu laufen bekommen allerdings muss dann die Applikation gestartet sein, was mich zu meiner nächsten Frage führt
.
Wie kann man OpenHardwareMonitor im Hintergrundlauf als reiner WMI-COM Server?
Martin MIchael
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

 
Delphi XE Starter
 
#9
  Alt 8. Jun 2017, 06:12
Danke Towmuz
https://theroadtodelphi.com/2013/02/...ucing-tsmbios/
Das hört sich ja gut an !
was mich wunder mal funktioniert das auslesen wunderbar
und dann wieder gar nicht
Also in dem Fall ist es ein ASRock Z87E-ITX
Mal sehen werde berichten.
Martin MIchael

Geändert von ATS3788 ( 8. Jun 2017 um 06:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

 
Delphi XE Starter
 
#10
  Alt 8. Jun 2017, 06:31
tsmbios wäre eine Super Sache gewesen.
Nur leider in meinem Fall liest es die wichtigen Sachen aus dem Bios nicht aus.
Die Idee die dahintersteckt ist aber beeindruckend.
Martin MIchael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf