Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - como leer mi hardware ?
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information como leer mi hardware ?

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
gaston260
Usuario


Registrado: Jan 15, 2009
Mensajes: 1

Asunto: como leer mi hardware ? Responder citando

hola ! me gustaria saber como se puede obtener los datos de temperaturas da mi pc y la del micro , si es posible ? no se por donde empezar ! muchas gracias !!
MensajePublicado:
Mie Ene 14, 2009 11:25 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: como leer mi hardware ? Responder citando



Anuncios



gaston260 escribió:
hola ! me gustaria saber como se puede obtener los datos de temperaturas da mi pc y la del micro , si es posible ? no se por donde empezar ! muchas gracias !!


Puedes probar esto, como primera aproximación, se trata de intentar obtenerla mediante WMI:

Código:

unit UnidadMenuPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, ActiveX, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    bObtenerTemperatura: TButton;
    procedure bObtenerTemperaturaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;
  function   obtenerObjeto(Value: String) : IUnknown;
  procedure mostrarTemperatura (var temperatura : string);

implementation

{$R *.dfm}

procedure mostrarTemperatura (var temperatura : string);
var
  ovObjSet : OleVariant;
  ovObj : OleVariant;
  ovEnum : OleVariant;
  pvEnum : IEnumVariant;
  dwFetch : Cardinal;
begin
  ovObjSet := obtenerObjeto('winmgmts:{impersonationLevel=impersonate}') as IDispatch;
  ovObjSet := ovObjSet.InstancesOf('Win32_TemperatureProbe');
  ovEnum := ovObjSet._NewEnum;
  pvEnum := IEnumVariant(TVarData(ovEnum).VUnknown);
  pvEnum.Reset;
  temperatura := '';
  while (pvEnum.Next(1, ovObj, dwFetch) = S_OK) do
  begin
     temperatura := ovObj.CurrentReading;
     ovObj := Unassigned;
  end;
  pvEnum := nil;
  ovEnum := Unassigned;
  ovObjSet := Unassigned;
end;

function obtenerObjeto (Value : String) : IUnknown;
var
  pmk : IMoniker;
  pbc : IBindCtx;
  cbEaten : LongInt;
  clsid : TGUID;
begin
  if (CLSIDFromProgID(PWideChar(WideString(Value)), clsid) = S_OK) then
  begin
    if not(GetActiveObject(clsid, nil, result) = S_OK) then
      result := nil;
  end
  else
  begin
    if (CreateBindCtx(0, pbc) = S_OK) then
    begin
      if (MkParseDisplayName(pbc, StringToOleStr(Value), cbEaten, pmk) = S_OK) then
      begin
        if not(BindMoniker(pmk, 0, IUnknown, result) = S_OK) then
          result := nil;
        pmk := nil;
      end;
      pbc := nil;
    end;
  end;
end;


procedure TForm1.bObtenerTemperaturaClick(Sender: TObject);
var
  temperatura : string;
begin
  mostrarTemperatura(temperatura);
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Temperatura: ' + temperatura);
end;

end.


Aunque hemos comprobado que en algunos equipos no la obtiene. Este dato a veces no es fácil obtenerlo pues depende de muchos factores:

* La placa base ha de soportarlo, algunas no tienen control de temperatura, sobre todo las antiguas.
* Cada BIOS es diferente, con lo cual, si realizas un software que obtenga la temperatura para una placa base que utilice una BIOS Award puede que no te funcione para una placa base que utilice una BIOS Phoenix.
MensajePublicado:
Vie Ene 16, 2009 9:01 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A