Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   buscando componente o forma de consultar hardware del sistema (https://www.clubdelphi.com/foros/showthread.php?t=83635)

vroa74 09-07-2013 20:08:13

buscando componente o forma de consultar hardware del sistema
 
buen dia estoy buecando alguna forma de poder consiltar el software y el harware del sistema operativo independiente mente de la version de windows que este instalado, claro que seria mejor si tambien encuentro que versionde de windows esta istalada.
uso delphi 2007 por el momento
he consultado paginas como: http://www.ajpdsoft.com/modules.php?...rticle&sid=245 solo que por cuestiones de no encontrar todos los componentes para la version de delphi que uso no la he podido revisar al 100%
y tambien http://neftali.clubdelphi.com/?p=589 del muy apresiado neftali solo que hasta el momento no he podido compilar e instalar los componentes. (ojo es posible que hasta el momento no haya podido instalar el componente del neftali por falta de conocimiento)
les agradeceria mucho su apoyo y de antemano gracias.

vroa74 09-07-2013 21:54:12

Cita:

Empezado por vroa74 (Mensaje 463538)
buen dia estoy buecando alguna forma de poder consiltar el software y el harware del sistema operativo independiente mente de la version de windows que este instalado, claro que seria mejor si tambien encuentro que versionde de windows esta istalada.
uso delphi 2007 por el momento
he consultado paginas como: http://www.ajpdsoft.com/modules.php?...rticle&sid=245 solo que por cuestiones de no encontrar todos los componentes para la version de delphi que uso no la he podido revisar al 100%
y tambien http://neftali.clubdelphi.com/?p=589 del muy apresiado neftali solo que hasta el momento no he podido compilar e instalar los componentes. (ojo es posible que hasta el momento no haya podido instalar el componente del neftali por falta de conocimiento)
les agradeceria mucho su apoyo y de antemano gracias.

Nota alguien puede orientarme sobre donde encontrar el MiTeC System Information Component Suite de preferencia en source.

Casimiro Noteví 09-07-2013 22:54:34

En torry.net

Fully functional
Source: On purchase/registration
Source Price: $260
Exe-Demo Included


Neftali [Germán.Estévez] 10-07-2013 11:15:53

En lo que se refiere a GLibWMI, hasta ahora me han compilado en todas las versoines.

¿Qué problema tienes al compilarlos/instalarlos?
¿Algún error? ¿Cual?

vroa74 11-07-2013 02:40:33

marca errores de delphi.personality.12

nlsgarcia 11-07-2013 07:17:00

vroa74,

Cita:

Empezado por vroa74
...alguna forma de poder consultar el software y el harware del sistema operativo independientemente de la version de windows...

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
   Win32_BIOS_Property : array[0..26] of string =
   (
    'BiosCharacteristics', 'BIOSVersion', 'BuildNumber',
    'Caption', 'CodeSet', 'CurrentLanguage',
    'Description', 'IdentificationCode', 'InstallableLanguages',
    'InstallDate', 'LanguageEdition', 'ListOfLanguages',
    'Manufacturer', 'Name', 'OtherTargetOS',
    'PrimaryBIOS', 'ReleaseDate', 'SerialNumber',
    'SMBIOSBIOSVersion', 'SMBIOSMajorVersion', 'SMBIOSMinorVersion',
    'SMBIOSPresent', 'SoftwareElementID', 'SoftwareElementState',
    'Status', 'TargetOperatingSystem', 'Version');

var
  Form1: TForm1;
  WMINameSpace : String;
  WMIClass : String;
  WMIProperty : String;

implementation

{$R *.dfm}

function GetWMIInfo(const WMINameSpace, WMIClass, WMIProperty : String) : Variant;
const
   wbemFlagForwardOnly = $00000020;

var
   FSWbemLocator : OLEVariant;
   FWMIService : OLEVariant;
   FWbemObjectSet : OLEVariant;
   FWbemObject : OLEVariant;
   oEnum : IEnumvariant;
   Value : LongWord;
   SQLWMI : String;
   WMIValue : Variant;
   i : Integer;

begin

   // Obtiene Acceso a WMI
   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');

   // Obtiene Acceso al NameSpace WMINameSpace localmente que contiene la Clase WMIClass
   try
      FWMIService := FSWbemLocator.ConnectServer('localhost', WMINameSpace, '', '');
   except
      raise Exception.Create('Error en WMI : NameSpace No Valido');
   end;

   // Contruye la Consulta SQL WMI (WQL) a la Clase Win32_Process
   SQLWMI := 'SELECT * FROM ' + WMIClass;

   // Ejecuta la Consulta
   try
      FWbemObjectSet := FWMIService.ExecQuery(SQLWMI,'WQL',wbemFlagForwardOnly);
   except
      raise Exception.Create('Error en WMI : Clase No Valida');
   end;

   // Interface a los objetos COM de la consulta por medio de enumeración
   oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;

   // Accesa las propiedades de los objetos de la enumeración
   if oEnum.Next(1, FWbemObject, Value) = 0 then
   begin

      try
         WMIValue := FWbemObject.Properties_.Item(WMIProperty).Value;
      except
         raise Exception.Create('Error en WMI : Propiedad No Valida');
      end;

      if VarIsArray(WMIValue) then
      begin
         for i:= VarArrayLowBound(WMIValue,1) to VarArrayHighBound(WMIValue,1) do
            Result := Result + ' ' + String(WMIValue[i]);
      end
      else if not VarIsNull(WMIValue) then
         Result := WMIValue
      else
         Result := EmptyStr;

      FWbemObject:=Unassigned;

   end
   else
      raise Exception.Create('Elemento no Encontrado en WMI');

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;

begin

   WMIClass := 'Win32_BIOS';
   WMINameSpace := 'root\CIMV2';

   ListBox1.Clear;

   for i := 0 to High(Win32_BIOS_Property) do
   begin
      WMIProperty := Format('%s = %s',[Win32_BIOS_Property[i],GetWMIInfo(WMINameSpace, WMIClass,Win32_BIOS_Property[i])]);
      ListBox1.Items.Add(WMIProperty);
      if ListBox1.ScrollWidth < ListBox1.Canvas.TextWidth(WMIProperty) then
         ListBox1.ScrollWidth := ListBox1.Canvas.TextWidth(WMIProperty) + 120;
   end;

end;

end.
El código anterior permite consultar el BIOS de la máquina por medio de WMI (Windows Management Instrumentation) a través de las Propiedades de la Clase 'Win32_BIOS' del NameSpace 'root\CIMV2'. Por medio de los NameSpaces, Clases y Propiedades de WMI se puede consultar la información pertinente (Hardware y Software) de una máquina local o remota. Este ejemplo puede servir de base a tu requerimiento utilizando las clases y propiedades del NameSpace 'root\CIMV2'.

El ejemplo esta disponible en el link: http://terawiki.clubdelphi.com/Delph...t_WMI_Info.rar

Te sugiero consultar estos links:
Cita:

Windows Management Instrumentation : http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

WMI Delphi Code Creator : http://theroadtodelphi.wordpress.com...-code-creator/

WMI Tasks using Delphi – Computer Hardware : http://theroadtodelphi.wordpress.com...uter-hardware/

WMI Scripting Examples : http://www.robvanderwoude.com/wmiexamples.php
Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 10:34:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi