Versión 2.0 (beta) de la librería GLibWMI
Hace tiempo que algunos de vosotros me habéis comentado que trabajáis en las últimas versiones de Delphi con la librería GLibWMI. Con pocos cambios se puede conseguir que estos componentes funcionen perfectamente en la nuevas versiones.
En concreto esta versión está compilada con XE4 y anteriores.
Aquí tenéis una imagen de la paleta de componentes (D6).
Os adjunto un pequeño resumen de los cambios y modificaciones introducidos.
COMPONENTES MODIFICADOS
Se ha añadido lo necesario para que la librería funcione correctamente en versiones posteriores a Delphi XE2. Incluida la próxima XE5.
Se han añadido nuevas propiedades al componente NetworkAdapterInfo.
Corregidos errores menores en el componentes ProcessInfo.
NUEVOS COMPONENTES
Se ha añadido a la librería nuevos componentes, que siguen la estructura de los existente para acceder a más clases de WMI. Además un componente genérico (en su primera versión) que nos permite acceder por SQL a cualquier clase de WMI (para las no existentes entre los componentes).
BootConfigurationInfo: Componente para acceder a la configuración de “boot” de un ordenador que ejecuta un sistema Windows.
CDROMDriveInfo: Permite acceder a la información de una unidad de CD-ROM existente en un ordenador con Windows.
CodecFileInfo: Permite acceder a la información de todos los codecs (compres/decompress) de audio o video instalados en el equipo.
DesktopInfo: Permite acceder a las características comunes de escritorio de un usuario. Las propiedades de esta clase pueden ser modificados por el usuario para personalizar el escritorio.
RegistryInfo: Permite acceder a las propiedades de la clase que representa al registro de windows de la máquina.
TimeZoneInfo: Componente para acceder a la clase Win32_TimeZone, que representa la información de zona horaria para un ordenador con Windows, que incluye los cambios necesarios para realizar la transición entre cambios horarios.
Componente SQL : Componente para acceder de forma genérica a las propiedades de WMI.
Una imagen de la demo general con todos los componentes:
DESCARGA
Podéis descargar la última versión desde la sección dedicada a la librería.
Como siempre cualquier sugerencia y comentario será bienvenido.
Un saludo.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Gracias Germán, nunca se sabe si estos componentes (o sea tu trabajo) podrá resultarnos útil en el futuro, aunque, si uno necesita información sobre el sistema sin duda parece ser una buena forma de conseguirla. :)
@dec
Hola David.
Pues eso espero, que le sean útiles a alguien. De esa forma el trabajo realizado será más gratificante. ;-)
Un saludo.
Hola Germán.
Leí en Club Delphi algo sobre lograr compilar GLibWMI en Delphi 7. Así que lo puse en la agenda para intentar ayudar con eso este fin de semana. Lo extraño es que ya no aparece el hilo donde se mencionaba esta cuestión, ¿alguna razón por la cual desapareció? A mí me parecía una muy buena noticia.
Bueno, puede que esto me lleve algo de tiempo por no disponer de mucho, pero lo primero que hice fue descargar la versión 2.0b de la biblioteca (si fuera conveniente comenzar con otra, sólo indicarme cuál).
Veo que no hay mucho problema para compilar unas cuantas unidades que ya puse en un Uses a manera de prueba. Pero me llama la atención que utilizas ámbitos de unidades («unit scopes») a partir de la versión 8 de Delphi, siendo que los ámbitos de unidades surgieron hace poco tiempo (en XE2, si no me equivoco).
Bueno, ya me dirás por dónde dirigir este pequeño esfuerzo. Si necesitas que pruebe algo en concreto, sólo decirme, estaré cerca.
Un saludo.
Al González.
@Al González
Hola Germán, yo de nuevo. :)
Todo salió bien con la compilación en Delphi 7. El demo PGenericTest parece ejecutarse bien (Windows XP), sólo se necesitó comentar la línea «tkUString: s.add(EvalStringProperty(PropInfo))» de la unidad OI.pas, dado que tkUString, como sabes, es una constante referente a Unicode.
Me avisas sobre cualquier otra cosa en la que pueda ayudar.
Saludos.
Al González.
@Al González
Hola Alberto.
De antemano, te agradezco el interés.
En cuanto al tema y su desaparición, fue un error por mi parte. Con la intención de moverlo de un foro a otro (y borrar uno que inicialmente había repetido), parece que los eliminé los 2.
Ya está restaurado aquí:
http://www.clubdelphi.com/foros/showthread.php?t=83813
La última compilación la he realizado con una de las versiones nuevas de Delphi, de ahí que puedan aparecer ámbitos de unidades, que eso sí, deberían aparecer con el correspondiente condicional {$IFDEF]} si es que no me he dejado alguno.
Un saludo.
@Al González
Hola Alberto, de nuevo.
Gracias por la compilación en Delphi 7. Te agradecería que me enviaras los cambios necesarios para volver a generar los ficheros y subirlos de nuevo.
Tanto en el código de la librería como en los ejemplos.
Un saludo y gracias de nuevo.
@Germán Estévez
El detalle es que Delphi 2007, 2009, 2010 y varias otras no reconocerán las referencias «System.Classes», «VCL.Controls», etc.
http://docwiki.embarcadero.com/RADStudio/XE4/en/Compiler_Versions
Esa tabla de versiones puede resultar un poco confusa. CompilerVersion 16.0 se refiere a la versión 16 del compilador (Delphi 8), no a la versión 16 de Delphi. :)
Por lo cual creo que, en lo referente a ámbitos de unidades, en lugar de:
{$IF CompilerVersion >= 16.0}
debe ser:
{$IF CompilerVersion >= 23.0} // Delphi XE2 y posteriores
Espero haberme explicado.
Saludos. :)
@Germán Estévez
En cuanto a los cambios que hubo que hacer para compilar, la biblioteca no necesitó ninguno. Sólo el programa demo requirió que se comentara la línea que mencioné antes de la unidad OI.pas:
“tkUString: s.add(EvalStringProperty(PropInfo))”
Saludos.
@Al González
Ok. Gracias.
Un saludo.
Tienes razón Alberto. Debo cambiarlo.
Gracias de nuevo.