Inicio > Componentes, Delphi, GLibWMI, Programación, WMI > Librería de componentes GLibWMI 3.2

Librería de componentes GLibWMI 3.2

Share Button

GLibWMI es una librería/biblioteca de componentes enfocados a la Administración de Sistemas Windows.
Están basados en la WMI de Windows (Windows Management Instrumentation). Podéis conocer algo más sobre WMI en la entrada del blog titulada «WMI – Introducción«.

ACTUALIZACIÓN 01/02/2024.

Actualmente se ha liberado la versión 3.2 estable (compatible con Delphi 12 Athens).

El código se ha subido en GitHub y en el blog se mantienen las versiones antiguas.
NOTA IMPORTANTE: Debido a problemas con la autentificación de Github la ubicación antigua del proyecto queda obsoleta (https://github.com/NeftaliDelphi/GLibWMI), las nuevas actualizaciones se harán en este repositorio:
https://github.com/germanestevez/GLibWMI

Proyecto en GitHub.

 

 

 

_________________________________________________________

ACTUALIZACIÓN 16/09/2021.

Actualizada la librería de componentes para que funcione con la versión 11 de delphi.

_________________________________________________________

ACTUALIZACIÓN 01/07/2020.

La librería de componentes se ha actualizado a la versión 3.0 considerada como estable (hasta ahoira estaba en fase beta). Se han añadido además nuevas demos y se han actualizado las existentes.

La versión 3.0 cuenta con nuevos componentes y compila sin problemas desde Delphi 6 hasta la versión Delphi 10.3 (por ahora no se ha probado en 10.4, pero debería compilar sin ningun problema).

ACTUALIZACIÓN 03/04/2019.

Actualizada la librería la versión 2.2b. Compatible con Delphi 10.2 (Tokyo) y anteriores.

  • Eliminados Hints y Warnings en los de componentes.
  • Eliminados Hints y Warning en los ejemplos .
  • Se añaden Units a los uses necesarias para versiones nuevas.
  • Se añade fichero incluyendo directivas de compilación.
  • Se generan packages para las nuevas versiones de delphi.

<DESCARGAR LIBRERÍA COMPLETA versión 2.2b>
<DESCARGAR SOURCE DEMOS versión 2.2b>
<DESCARGAR EXE DEMOS versión 2.2b>

_________________________________________________________

ACTUALIZACIÓN:  1o/09/2014.

Liberada la Versión 2.1b.

Nuevas propiedades en los componentes y algunos errores corregidos.

Además la librería se ha compilado con Delphi XE7 sin problemas.

ejemplos_thumb.png

<DESCARGAR LIBRERÍA COMPLETA versión 2.1b>

<DESCARGAR SOURCE DEMOS versión 2.1b>

<DESCARGAR EXE DEMOS versión 2.1b>

_________________________________________________________

ACTUALIZACIÓN:  01/08/2013.

Liberada la Versión 2.0b.

Nuevos componentes añadidos (BootConfigurationInfo, DesktopInfo CodecsInfo, RegistryInfo, TimeZoneInfo) y corrección de algunos bugs.
Compilado para las nuevas versiones de Delphi, incluídas XE4 y XE5.

 Versión 2.0 GLibWMI

<DESCARGAR LIBRERÍA COMPLETA versión 2.0b>

<DESCARGAR SOURCE DEMOS versión 2.0b>

<DESCARGAR EXE DEMOS versión 2.0b>

_________________________________________________________

ACTUALIZACIÓN:  23/02/2010.

Liberada la Versión 1.8b.

Nuevos componentes añadidos y corrección de algunos bugs; Correción en la recuperación de propiedades y algunas pérdidas de memoria.

Actualizadas las demos con los nuevos componentes.

Como la anterior verión, los últimos cambios están subidos en Sourceforge (GLibWMI).

<Descargar librería completa;  Sources+Bin versión 1.8b>

<Descargar demos; Sources+Bin versión 1.8b>

<Descargar demos; Bin versión 1.8b>

_________________________________________________________

ACTUALIZACIÓN:  22/01/2010.

Versión 1.6b.

He subido el proyecto a Sourceforge (GLibWMI). La ultima versión estará disponible allí para su descarga.

Se distribuye con licencia GNU y todos los ficheros (incluídos los fuentes se pueden descargar).

Descargar ficheros:

<GLibWMI completa 1.6b>
<GLibWMI demos 1.6b>
<GLibWMI EXE demos 1.6b>

_________________________________________________________

La librería está en fase beta y se puede usar de forma libre y gratuíta.

Las versiones actuales están disponibles (ficheros compilados) para D6, D7 y D2009.

Se pueden descargar diferentes paquetes:

<GLibWMI>
<GLibWMI para Delphi 6>
<GLibWMI para Delphi 7>
<GLibWMI para Delphi 2009>
<Demos compiladas>>

Funciona sin problemas en sistemas basados en Windows 2000 y posteriores.
Para más información consultar:
«Operating System Availability of WMI Components»

Como bien he dicho, están en fase beta, así que se aditen sugerencias, errores, comentarios,…

Un saludo.

Vota este post
Subscribe
Notify of
guest

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

82 Comments
Inline Feedbacks
Ver todos los comentarios
Alin Sfetcu
Alin Sfetcu
14 years ago

When runnning the general demo (the compiled executable) on W7 Ultimate x64 I get an AV when try to see ProcessorInfo or OperatingSystemInfo information. Ulterior calls to those 2 categories work without problem.

Thank you for this release. The component pack looks great, pity there is no source code available. Because of that, to use this components in a application is a hard to make decision.

Again thank you

DrKiroCorp
DrKiroCorp
14 years ago

Hola, que tal, que maravilla de componentes, si los hubiese visto antes no que ya me arranque los pelos con la pura WMI jeje, bueno te comento que trabajando con el componente TDiskDriverInfo si me otorga la información que debe de ser pero cada vez que se ejecuta, es decir, se activa la aplicación aumenta la cantidad de memoria utilizada (en el administrador de tareas) entonces con agregar un _Release a la variable SObject en el UProcedure.pas y en el siguiente procedimiento al final del bucle while, se sigue ejecutando pero sin aumentar la cantidad de la memoria utilizada, saludos

procedure GetWMIProperties(AIndex:integer; {0-TODOS 1-Primero 2-segundo 3…}
Services:ISWbemServices; wmiClass:string;
var aProperties:TStrings);
var
SObject: ISWbemObject;
ObjSet: ISWbemObjectSet;
Enum: IEnumVariant;
TempObj: OleVariant;
Value: Cardinal;
i: integer;
begin

// proteccion a problemas
try

// realizar la consulta
ObjSet := Services.ExecQuery(‘SELECT * FROM ‘+wmiClass, ‘WQL’,
wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);
// Lista de objetos
Enum := (ObjSet._NewEnum) as IEnumVariant;

if (AIndex 0) then begin
i := 1;
// Recorrer la lista
while (i AIndex) do begin
Enum.Next(1, TempObj, Value);
inc(i);
end;
end;

// Recorrer la lista
while Enum.Next(1, TempObj, Value) = S_OK do begin

// Access al objeto
try
SObject := IUnknown(TempObj) as ISWBemObject;
except
SObject := nil;
end;

// Encontrado?
if (SObject nil) then begin
// Acceder a la propiedad
SObject.Properties_;
aProperties.Add(SObject.GetObjectText_(0));
end;

if (AIndex 0) then begin
Exit;
end;
SObject._Release; <—–agregando esta linea ya no se acumula la-
end; cantidad de memoria utilizada por la app.

finally
// Nada (pendiente)
end;
end;

victor
victor
13 years ago

Hola Neftali.

Instale tu componente 1.8b en D2009, pero al ejecutar las demos, no encuentra el CWMIBase.dcu

Que me falta,

Gracias

yyimen
yyimen
13 years ago

UProcedures
286-> if (index 0) then begin
if (index = 1) then begin

Kurono
Kurono
13 years ago

hola neftali uso tu paquete GLibWMI pero quiero saber si puedes agragarle un componente para el control de las RPM de los fan tanto del cpu como los de case

Kurono
Kurono
13 years ago

hola neftali probe la aplicacion en una latop dell c610 y me devolvio resultados lo puedes ver aqui
http://www.subirimagenes.net/show-image.php?id=c7ee6304edba1a3f087dee2a2c31754e

Kurono
Kurono
13 years ago

hola neftali quisiera saber que has hecho con el componente de control de los Ventiladores que te habia solicitado no se si has tenido la oportunidad de ver la imagen que te envie en mi ultimo comentario

Kurono
Kurono
13 years ago

entonces no hay forma de crear la libreria para controlar las rpm

Kurono
Kurono
13 years ago

ok gracia neftali investigare si existe alguna dll o algo parecido sobre mi placa base

movorack
13 years ago

Hola neftalí, el día de hoy estuve buscando como obtener la información del disco duro hasta que he llegado a tu web. de verdad muy buenos el set de componentes. haz hecho un estupendo trabajo.

Al compilar el programa con el DiskDriveInfo sobre Win7 con Delphi 2010 todo marchó muy bien.

Luego llevé este ejecutable a una maquina virtual (Oracle VM VirtualBox corriendo WinXP) y no corria el aplicativo. haciendo un debug remoto del programa obtuve el siguiente error:

EDOMParseError «El documento XML debe tener un elemento de nivel superior»

movorack
13 years ago

@movorack
El error que comenté anteriormente sucedia por un error en el archivo (XML) de configuración de mi programa.

aunque al correr el programa, y llamar la función (debe ser por estar en una maquina virtual) no me devuelve información del disco duro.

Walter
Walter
13 years ago

Hola German
Probé el componente y lo hice andar en XP perfectamente
y de hecho me hice varias rutinas de seguridad de mi sistema en base a
resultados obtenidos por tus componentes.
Pero… Reinstalé win (Win seven pro 32)
Primero me decia [DCC Fatal Error] main.pas(11): F1026 File not found: ‘CWMIBase.dcu’
Bueno agregué al path, luego me dice:
[MakeDir Error] Unable to create directory «c:\Archivos de programa\Borland\Delphi6\Tools\Developer Express Inc\dcus\». Access to the path ‘c:\Archivos de programa\Borland\Delphi6\Tools\Developer Express Inc\dcus\’ is denied.

Y no compila el componente. Yo Delphi6 jamás usé, así que asumo que
deben ser tus componentes, pero no encuentro donde o por qué busca
esa ruta. Asi que si tienes alguna solución rapida me la pasas pls,
yo de igual forma seguiré probando y leyendo a ver si alguien lo
solucionó o como hacer para corregir esto.

Muchisimas gracias. Tu trabajo está genial.
Un abrazo!
Walter

Walter
Walter
13 years ago

Nuevamente yo German, sorry pero no podia esperar mucho
creé manualmente la carpeta:
C:\Archivos de programa\Borland\Delphi6\Tools\Developer Express Inc\dcus\
Se que no deberia, pero nose porque crea esa carpeta al compilar y crea ahi todos los .dcu. Quizas en XP estaba pero no me di cuenta y en seven
no tiene permiso de creación y entonces Chan el Error!.
Bueno seguiré probando, pero creo que ya quedó. Cualquier cosa te comento.
Actualmente estoy usando DISKInf.DiskDriveProperties.Signature y CPUInf.ProcessorProperties.ProcessorID quisiera saber si se puede generar algo reducido con esto, ya que es un poco pesado todo en
ordenadores viejos.
Nuevamente muchisimas gracias por tu excelente material
Walter

Montipyton
Montipyton
13 years ago

Primero de todo felicitarte por tu magnífico trabajo. Y segundo comentante un pequeño fallo que he detectado al usar el componente TProcessInfo.

El error se produce al intentar hacer un Terminate sobre un proceso por el ProcessID ya que por la forma de extraer las propiedades, el componente devuelve como ProcessID el ParentProcessID, con lo que la ejecución del Terminate no termina con exito.

Te dejo un fragmento de código de como lo he modificado yo:

Unidad: UProcedures.
procedure GetWMIPropertyValue

function _ExtractValue(Data:string):string;
var
str:string;
index, i:integer;
TS:TStrings;
begin
Result := »;
TS := TStringList.Create();
try
TS.Text := StrInfo;

// Recorrido por las propiedades
for i := 0 to (TS.Count – 1) do begin
// Cadena
Str := Trim(TS[i]);
index := AnsiPos(Data + ‘ = ‘, Str);
if (index = 1) then begin <—– esta linea era index0

Logman
Logman
13 years ago

TStartupCommandInfo sólo devolverá 32 entradas de lanzamiento poco y no ninguna de las entradas de la colmena de 64 bits. ¿Hay una bandera? ¿Puedo solicitar uno o el otro? o ambos?

http://support.microsoft.com/kb/305097
http://msdn.microsoft.com/en-us/library/aa393067 (v = vs.85). aspx

por cierto, un gran conjunto de componentes gracias
lo siento si esto no se traduce bien, yo no sé español (pero Google lo hace)

Logman
Logman
13 years ago

Logman :
TStartupCommandInfo sólo devolverá 32 entradas de lanzamiento poco y no ninguna de las entradas de la colmena de 64 bits. ¿Hay una bandera? ¿Puedo solicitar uno o el otro? o ambos?
http://support.microsoft.com/kb/305097
http://msdn.microsoft.com/en-us/library/aa393067 (v = vs.85). aspx
por cierto, un gran conjunto de componentes gracias
lo siento si esto no se traduce bien, yo no sé español (pero Google lo hace)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

Logman
Logman
13 years ago

Logman :

Logman :
TStartupCommandInfo sólo devolverá 32 entradas de lanzamiento poco y no ninguna de las entradas de la colmena de 64 bits. ¿Hay una bandera? ¿Puedo solicitar uno o el otro? o ambos?
http://support.microsoft.com/kb/305097
http://msdn.microsoft.com/en-us/library/aa393067 (v = vs.85). aspx
por cierto, un gran conjunto de componentes gracias
lo siento si esto no se traduce bien, yo no sé español (pero Google lo hace)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Wow6432Node las entradas no se devuelven

Logman
Logman
13 years ago

TStartupCommandInfo sólo devolverá 32 entradas de lanzamiento poco y no ninguna de las entradas de la colmena de 64 bits. ¿Hay una bandera? ¿Puedo solicitar uno o el otro? o ambos?
http://support.microsoft.com/kb/305097
http://msdn.microsoft.com/en-us/library/aa393067 (v = vs.85). aspx
por cierto, un gran conjunto de componentes gracias
lo siento si esto no se traduce bien, yo no sé español (pero Google lo hace)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Wow6432Node las entradas no se devuelven

Casacham
Casacham
13 years ago

Excelente trabajo. Esto en realidad a mi me sirve para estudiar el codigo. Con esto tengo para unas largas semanas de estudio. Muchas gracias por tu aporte.

patricio fica
patricio fica
13 years ago

Nada más que felicitarte…
Gracias por tu aporte.

Patricio Fica

Luis Fuentes
Luis Fuentes
13 years ago

Felicitaciones por este componente. Llegue a el buscando alguna aplicación en Delphi que me informara la temperatura del cpu,pero no la consigo en GLibWMI, realmente no la tiene o donde se encuentra? Gracias.

cargem
cargem
12 years ago

problem when install GLibWMI 1.8
[IMG]http://img691.imageshack.us/img691/2121/picture0001m.png[/IMG]

borato
borato
11 years ago

Hola, estoy usando la versión 1.8 para recuperar la serie HD (DiskDriveInfo1.DiskDriveProperties.SerialNumber), pero cuando se ejecuta la aplicación en Windows XP devuelve una cadena vacía.
Ellos sabrían decir por qué ocurre esto, si no hay corrección?
¡Gracias!

Eddie
11 years ago

¿Alguien ha probado estos componentes con Delphi XE3? ¡Saludos!

gleury
gleury
11 years ago

Seria otimo se ouvesse uma atualização no componente

jonatan
jonatan
11 years ago

saludos Neftali

la funcion
ddProps.SerialNumber
no me devuelve nada o cadena vacia

jonatan
jonatan
11 years ago

La probe en windows xp, no hay forma usar un componente que funciones en xp y en 7??

Andres Salazer
Andres Salazer
10 years ago

Hola me pueden ayudar porfavor estoy iniciandome en delphi y eh logrado hacer un sistema de logueo estoy estudiando actualmente y es para un trabajo para la escuela este sistema de logueo requiere de autenticar el ID del procesador este proyecto lo tiene pero no logro instalar los controles y mucho menos poder abrir los proyectos ya que me pide dichos controles quisiera porfavor si en un form me pueden separar el processor ID con su label y textbox muchas muchas gracias!!

Luis
Luis
10 years ago

to work in Delphi XE changed the conditional compiler
«CompilerVersion> = 16.0» to «CompilerVersion> = 23.0»
right?

Raynel Rodríguez
Raynel Rodríguez
8 years ago

Hola Neftalí, saludos y felicitaciones por tus componentes, son excelentes!!. Tengo un problema o duda, estoy haciendo una aplicación de o cual crea un número serial para validar el programa por primera vez, estoy usando los componentes GLibWMI para realizarlo, en especifico los de BiosCode, pero al correrlo y validarlo con este ejemplo:

BiosCode:=BiosInfo1.GetHashCode;
if Hash 0 then
EdIcode.Text := inttostr(Bioscode)+Claveanhadida
else
EdIcode.Text := inttostr(Bioscode);
Clave := EdIcode.Text;

El valor que puse en EdIcode varía, sé que si corro la aplicación en modo administrador el valor guardado en esta variable permanece fijo, cómo haría para que el valor permanezca fijo, cualquier ayuda sería excelente, uso Win 8.1. De antemano, muchísimas gracias.

82
0
Would love your thoughts, please comment.x
()
x