Terremoto Haití: Donaciones CRUZ ROJA

viernes, 15 de enero de 2010 Sin comentarios
Share Button

Supongo que a estas alturas todos estamos al corriente de lo que ha pasado.
Os animos desde aquí ha realizar una donación a través de la Cruz Roja (o cualquier otra entidad). Lo que para nosotros puede ser poco, allí puede ayudar mucho.

Se puede donar por cuenta, tarjeta, teléfono,… ¡hasta utilizando el móvil! así que no hay excusa. ;-) ¡Animaros!

Categories: Otros Tags: , ,

GLibWMI Versión 1.3 (beta)

lunes, 11 de enero de 2010 Sin comentarios
Share Button

Acabo de empaquetar la versión 1.3 (beta) de la librería de componentes GLibWMI, basados en la WMI de Windows.

Básicamente he añadido nuevos componentes y he corregido algunos errores que incluía la demo general. Además he testado la librería en Delphi 2009 sin ningun problema a la hora de compilar. Doy por supesto que en todas las intermedias entre D7 y D2009 fucionará sin problemas.

Los componentes nuevos son:

  • CProcessInfo:  Información acerca de los procesos que hay ejecutándose en el sistema..
  • CServiceInfo:   Información detalleda de los servicios que hay instalados en el sistema..
  • CDesktopMonitorInfo:   Información detallada sobre el monitor o dispositivo de visualización que hay en el sistema.
  • CComputerSystemInfo:   Información acerca del sistema en General.
  • CStartupCommandInfo:    Información acerca de los procesos que se ejecutan automáticamente cuando el usuario hace el Login en el sistema.

<Ver más detalles>

Librería de componentes GLibWMI 3.2

viernes, 8 de enero de 2010 82 comentarios
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.

Componentes Generales GLib

viernes, 8 de enero de 2010 32 comentarios
Share Button

GLib es una librería/biblioteca de componentes de uso general

Son de uso gratuito y de licencia libre.

Puedes usarlos libremente y descargar el código fuente para estudiarlo o modificarlo; Puedes utilizarlos en cualquier tipo de aplicaciones; Gratuías o comerciales. Sólo te pido que si haces cambios en el código (mejoras, correcciones,…) me lo comuniques para actualizar los componentes, si son de interés para mi y para otras personas.

Puedes descargar los componentes de forma individual o todos juntos en un package, dependiendo de lo que te interese. Para ello selecciona los links individuales o para descargar el paquete completo el último que hace referencia a la Librería GLib.

 

HISTORIAL (v. 1.3)

A parte de algunos pequeños bugs se han compilado las librerías sobre la versión XE de Delphi sin presentar ningun problema. Se añadi el package para la versión XE.

Problemas resueltos:

  (ClogDisk)
* Permitir grabación continua de ficheros (Accumulative).
* (CLogDisk) Propiedades para permitir o no grabar pie y cabecera.

    (CustomizeGrid)
* Corregido problema al acceder a los títulos de las columnas.
* Corregido error de pintado de estilos y filas alternativas al recorrer el DBGrid.
* Puede pintar de forma automática las columnas de tipo Memo y Boolean como texto y checkbox respectivamente.

 (EditInsideHelp)
* Changed InsideHelpColor by InsideHelpFont for more customization possibilities.
(thanks Ariel Martín  from Cuba)

(DiskInfo)
* Corrected bug on select letter (Thanks Vincenzo).
* (v. 1.2) Corregido un error al obtener Número de Serie de varios discos instalados. (Thakns Peter Aschbacher)
* Añadidas propiedades para seleccionar los controles que se quieren almacenar… (SelectTaggedControls y SelectTag)

_________________________________________
Componente TLogDisk.
(version 1.0)

El componente TLogDisk sirve para facilitar el trabajo a un programador que necesite añadir un Log a sus programas. Basta con “soltar?? el componente en un formulario del programa y activarlo. Automáticamente el componente crea el fichero de Log, almacena datos de la aplicación (cabecera) y ofrece al programador métodos/rutinas para añadir datos de diferentes tipos al Log.

_________________________________________
Componente TEditInsideHelp.
(version 1.0)

Este componente permite definir un texto de ayuda en la parte interna del control de edición (TEdit). El texto desaparace cuando el control contiene algun texto que el usuario ha introducido. Se pueden definir el color que deseamos para el texto de la ayuda de forma independiente al color definido en la fuente (propiedad Font) del componente.

 


_________________________________________

Componente TPanelGrid.
(version 1.0)

Este componente (en éste caso derivado de un TPanel) muestra cómo añadir a un componente una Cuadrícula o Grid similar a la que aparece en los formularios cuando los estamos diseñando desde el IDE de Delphi.
Se puede configurar en el componente el color y el espaciado entre puntos de la cuadrícula.
Basta con soltarlo en el formulario y activarlo.

 


_________________________________________
Componente TDiskInfo.
(version 1.2)

Este componente permite para recuperar información diversa sobre los Discos existentes en el de sistema; Discos duros, diskettes, discos de red, discos RAM… Colóquelo en un formulario y defina la letra del disco.

Puede recuperar la información sobre:

  • Volumem; Etiqueta, número…
  • Serial number (no número de volumen)
  • Espacio; Libre, total, ocupado.
  • Icono del suistema
  • Nombre en el Explorer y descripción
  • Tipo de disco
  • Sistema de ficheros
  • Clusters, Sectores,…


_________________________________________
Componente TSortListBox.
(version 1.0)

Componente derivado de un TListBox que añade la propiedad de definir ordenaciones para los diferentes elementos de la lista; Junto a cada elemento se muestra una señal para indicar la ordenación. Posee una propiedad de tipo array para consultar el estado de cada item de la lista


_________________________________________
Componente TSaveComps.
(version 1.4)

Permite guardar la posicion y tamaño de todos los componentes que se encuentran en el formulario. Utiliza para ello un fichero INI.
Basta con colocar el componente en el formulario y activarlo; Cuando la aplicación se cierra graba la posición/tamaño y al volver a ejecutarla los recupera de forma automática.


_________________________________________
Componente TSelectOnRuntime.
(version 1.5)

Permite seleccionar componentes visuales (en Runtime) que haya en un form de forma visual como se hace con las imágenes en los programas de diseño o con los controles en el IDE de Delphi.
Además se pueden mover y redimensionar los controles seleccionados. Basta con soltar el control en el formulario, asignarle el control que se desea seleccionar/mover/redimensionar y activarlo.

_________________________________________
Componente TKeysOnForm.

(version 1.0)

Permite gestionar de forma sencilla (sin código) algunas de las combinaciones de teclas más utilizadas en los formularios. Basta con soltar el componente sobre el formulario y activar las propiedades deseadas segun el comportamiento que queramos.

  • ENTER para cambiar de campo.
  • ESC para cerrar el formulario
  • Avanzar al siguiente control
  • Retrasar al anterior control
  • Teclas de función


_________________________________________
Componente TCustomizeGrid.
(version 1.3)

Permite modificar algunos aspectos en la visualización de un Grid estandard.
No deriva del DBGrid, si no que funciona como complemento al componente estandard de Delphi. (En construcción…)
La propiedad Flat permite modificar el aspecto del DBGrid.
Implementa métodos para mejorar el pintado en el Grid de las celdas de tipo Booleano y Memo;
Sustituye el texto por un checkbox y (MEMO) que aparece en los campos Memo por el texto del campo.

Además provee eventos para modificar colores del DBGrid:

  • OnPaintCell: Para pintar xeldas de un determinado color.
  • OnPaintCellExt: BIS del anterior con más parámetros.
  • OnPaintColumn: Permite pintar una columna de color.
  • OnPaintRow: Permite pintar una file de color.
  • OnPaintCellImage: Permite pintar imágenes en una celda.
  • OnChangeTitleCell: Modificar las celdas de título.


_________________________________________
Componente TInactivityApp.
(version 1.0)

Este componente permite detectar en la aplicación donde se utiliza la inactividad de teclado y de ratón pasado un determinado tiempo (de forma similar a cómo se activa el salvapantallas del sistema).
El tiempo que se quiere detectar de inactividad es configurable por el usuario en minutos y segundos. Basta con activar el componente, configurar el tiempo de inactividad; Pasado este tiempo de inactividad «saltará» un evento de aviso.



_________________________________________
Librería completa GLib.
(version 1.3)

Actualizada  09/09/2011

Incluye en un único paquete todos los componentes anteriores.

Invitaciones Google Wave

jueves, 17 de diciembre de 2009 5 comentarios
Share Button

Hoy me ha llegado la invitación a probar Google Wave.

Estoy revisando por encima y por ahora no tengo mucho tiempo; De todas formas lo primero que he visto es que tengo algunas invitaciones para compartir (creo que en este momento quedan 7).

Si alguno de los que asíduamente leéis este blog necesitáis o queréis alguna, pues basta con pedirla, que para eso es esta entrada.

Nos vemos (en wave¿?¿) ;-D

Categories: Otros Tags: , , , ,

PING «threaded» usando ICMP.DLL

miércoles, 16 de diciembre de 2009 4 comentarios
Share Button

Hay muchas formas de implementar un PING. Una de ellas es utilizando la librería ICMP.DLL (Internet Control Message Protocol).
Basándome en la Unit Ping.pas que utiliza esta librería extraída de delphi-Central, he creado un ejemplo que la utiliza combinando las llamadas con Threads.

La unit Ping.pas se puede descargar desde la página anterior o desde aquí (raw_ping). El ejemplo crea una clase llamada TPingThread con la siguiente estructura:

  TPingThread = class(TThread)
  private
    mmResult:TMemo;
  protected
    procedure Execute; override;
    procedure UpdateResult;
  public
    PingResult:TPingResult;
    Ready:Boolean;
    constructor Create(Ping:TPingResult);
  end;

En este caso hemos añadido un TMemo para poder usarlo en la sincronización y mostrar los resultados, aunque no seía necesario (sólo para mostrarlos en este ejemplo), ya que los resultados realmente se alamacenan en la variable PingResult.

El thread utiliza el procedimiento IcmpSendEcho para realiza el Ping.

Se puede descargar el código fuente y los binarios compilados con Delphi 6:
<CODIGO FUENTE>
<BINARIO>

Se puede comparar este con un ejemplo similar realizado sin threads.
<DESCARGAR BINARIO>

Categories: Delphi, Ejemplos Tags: , ,

Manifiesto “En defensa de los derechos fundamentales en internet”

jueves, 3 de diciembre de 2009 Sin comentarios
Share Button

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de Internet manifestamos nuestra firme oposición al proyecto, y declaramos que:

  1. Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
  2. La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
  3. La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
  4. La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
  5. Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
  6. Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
  7. Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
  8. Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
  9. Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
  10. En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.
Categories: Internet, Otros Tags: , , ,

Sobre las RXLib (Recopilatorio)

viernes, 27 de noviembre de 2009 29 comentarios
Share Button

Personalmente soy de los que llevo unos cuantos años utilizando las RxLib. Siempre me han parecido unas librerías muy buenas y estables.
Hace un tiempo realizé una traducción (no oficial) de la versión para Delphi 7, para traducirla a Delphi 2005/2006.

Desde ese día hasta hoy, no son pocos los programadores que se han puesto en contacto conmigo, vía correo electríonico o vía mi web para pedirme esa versión o para comentarme cosas sobre versiones posteriores.

Así que me he decidido ha hacer esta recopilación de diferentes versiones, oficiales, no-oficiales, recursos,…

Os adjunto también algo de información de cada una de ellas. En la mayoría de los casos datos del autor y poco más, extraídos de los fuentes o de los archivos TXT que incluyen.

(08/04/2024)
Está disponible para descarga desde la página «no oficial» www.micrel.RxLib la versión 1.0.22 compatible con las últimas versiones de Delphi,  Delphi 12 Athens. También os dejo el enlace de descarga desde mi página.


(12/07/2023)

Está disponible para descarga desde la página «no oficial» www.micrel.RxLib la versión 1.0.21 compatible con las últimas versiones de Delphi,  Delphi 10.4 Sydney y 11 Alexandría. También os dejo el enlace de descarga desde mi página.
(25/05/2020)
Está disponible para descarga desde la página «no oficial» http://www.micrel.cz/RxLibwww.micrel.RxLib la versión 1.0.19 compatible con Delphi 10.3 Rio. También os dejo el enlace de descarga desde mi página.
(27/04/2017)
Jhonny, Administrador y moderador  de los foros del ClubDelphi, ha portado la ultima versión disponible en la página http://www.micrel.cz/RxLib/ a la versión 10. 2 Tokyo.
Aquí tenéis el enlace a blog donde podéis leer la entrada y descargar los fuentes, que también adjunto debajo de este mensaje.
 (20/12/2016)
En esta página podéis descargar versión no oficial para las últimas versiones de Delphi XE/, XE8, 10 Seatle y 10.1 Berlín.
 (13/01/2015)
Versión no oficial con fecha de Mayo del 2014 compatible con Delphi XE6
(28/03/2012)
Nueva versión no-oficial, de las RxLib. Revisión 1.08. Incluye soporte para la útltima versión de delphi (XE2) y segun el documento con las modificaciones, también soporte para 64 bits.

(02/02/2012)

Añadida versión no-oficial de las RxLib (2.75  build 1.07); Añade un componente nuevo y corrige algunos bugs de la anterior.  Según la documentación comprende versiones delde D2005 hasta Delphi XE2.

(13/09/2011)

Añadida versión «no-oficial» con soporte para Delphi XE2. Corregisdos algunos errores relacionados con Unicode y el componente rxMemoryData.

(18/03/2011)

Versión «no-oficial» de las RxLib que soporta DelphiXE. Esta incluye nuevas funciones y nuevos componentes (17 según leo). Podéis ver la los cambios principales introducidos en esta versión revisando esta página.

También he subido una recopilación de todos los recursos en los diferentes idiomas para la versión 2.75(Bulgarian, Chinese, Chinese (traditional), Czech, Danish, Dutch, French, Galician, German, Geek, Hungarian, Italian, Korean, Mexican, Polish, Portuguese, Romanian, Serbian, Slovene, Spanish, Slovak, Swedish, Turkish, Ukrainian).

(17/02/2011)

Versión (no oficial) para RAD Studio XE; Compilado sin problemas; Incluye packages para Delphi 6 y posteriores hasta RAD Studio XE, junto con las Demos y la ayuda.

____________________________________________________________

Versión para Lazarus.

Lagunov Aleksey (alexs)
ALEXS75-at-YANDEX-dot-RU

Versión 2.75 para versiones antiguas de Delphi y C++Builder

Los recursos traducidos a español de la versión 2.75

La últimas versión oficiales de las RxLib. 2.75. Comprimidas y con instalador.

qmd@usercontrol.com.br
http://www.usercontrol.com.br
icq: 15630894

Neftalí -Germán Estévez-. El que suscribe estas líneas.

Adapted: psa1974

Steve Jordi.

________________________________________________________

Os adjunto también este link, que permite acceder a la ayuda en línea, a partir de las imágenes de los componentes que aparecen en la paleta de las RxLib.

RxLib Help

AÑADIDO: Adjunto esta página (traducción automática al castellano) que también hace un recopilatorio de páginas ynoticias relacionadas con las RxLib. Está originalmente en ruso y traducida utilizando el traductor de Google.

Descubre Delphi 2010 (Barcelona)

miércoles, 25 de noviembre de 2009 1 comentario
Share Button

DanySoft organiza en Barcelona este 26 de Noviembre el evento de presentación de Delphi 2010, como ya viene siendo habitual para cada versión que aparece de Delphi.

También los hay previstos para Madrid y Portugal en los días siguientes.

La información completa la tenéis aquí:
http://www.danysoft.com/general/te-invitamos-a-tocar-el-futuro-barcelona-madrid-y-portugal.html

La agenda es la siguiente:

Agenda

09.00 a 09.30 | Registro y bienvenida.
09.30 a 11.30 | Novedades Rad Studio 2010

Delphi 2010 soporte pantalla táctilDelphi nos facilita el uso de las últimas tecnologías de programación para aplicaciones Windows y Web, y tanto en la plataforma Win32 como .NET. En esta sesión revisaremos las principales incorporaciones técnicas a esta última versión, como son la biblioteca VCL de controles la entrada a través de interfaces táctiles y mediante gestos naturales, las mejoras en DataSnap, el soporte de Firebird, así como otras ventajas para crear mejores aplicaciones, más robustas y fáciles de mantener.

Entre los temas que se tratarán durante esta sesión, destacan:
> Aplicaciones para dispositivos táctiles
> Soporte para Firebird
> DataSnap: cliente/servidor sobre http.

11.30 a 12.00 | Descanso
12.00 a 13.30 | Windows Communication Foundation con Delphi W32 y .NET
inscribir a evento danysoftEn esta sesión crearemos un servidor de datos utilizando WCF en Delphi Prism y lo consumiremos con Delphi Prism y Win32. Aprovecharemos para crear el cliente Win32 con la VCL para la Web integrando Silverlight.

Entre los temas que se tratarán durante esta sesión, destacan:
> Creación de un servicio WCF
> Capa de datos con LINQ
> Consumo de servicios Web desde Delphi W32
> Silverlight con la VCL para la Web

13.30 a 14.00. Preguntas.


Interesante como siempre.
Allí nos vemos.

Categories: Delphi, Eventos Tags: , ,

Inventario de software instalado (WMI)

martes, 24 de noviembre de 2009 6 comentarios
Share Button

Siguiendo con los ejempos y ahondando en las posibilidades de WMI (Windows Management Instrumentation), a raiz de este hilo en los foros del ClubDelphi, referente al software instalado en nuestro ordenador, he probado a obtener la lista de programas instalados utilizando la WMI.

Para ello podemos utilizar la clase Win32_Product.
Si accedemos a su descripción en MSDN, obtenemos la siguiente descripción de la clase:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Win32_Product : CIM_Product
{
  uint16   AssignmentType;
  string   Caption;
  string   Description;
  string   IdentifyingNumber;
  string   InstallDate;
  datetime InstallDate2;
  string   InstallLocation;
  sint16   InstallState;
  string   HelpLink;
  string   HelpTelephone;
  string   InstallSource;
  string   Language;
  string   LocalPackage;
  string   Name;
  string   PackageCache;
  string   PackageCode;
  string   PackageName;
  string   ProductID;
  string   RegOwner;
  string   RegCompany;
  string   SKUNumber;
  string   Transforms;
  string   URLInfoAbout;
  string   URLUpdateInfo;
  string   Vendor;
  uint32   WordCount;
  string   Version;
};

Podemos disponer así de toda la información, referente a cada uno de los programas/aplicaciones instalados en nuestro equipo (*NOTA*).

Para ello, lo primero que debemos hacer es Importar a Delphi la librería “Microsoft WMI Scripting v1.X Library (Version 1.X)“, si no lo hemos hecho ya.
En la Introducción sobre WMI, se explica un poco más detalladamente.

Una vez importada, lo siguiente (dentro de nuestro ejemplo) es conectar con nuestro proveedor (en este caso nuestra máquina local):

1
2
3
4
5
6
    // Create the Location object
    Locator := CoSWbemLocator.Create();
    // Connect to the WMI service, with the root\cimv2 namespace
    aServices := Locator.ConnectServer(STR_EMPTY, {Server}
        STR_CIM2_ROOT, {user}STR_EMPTY, {password}STR_EMPTY,
        STR_EMPTY,STR_EMPTY, 0, nil);

A continuación, si la conexión ha sido correcta, realizamos la consulta sobre la clase Win32_Product, que nos dará la información que necesitamos.

1
2
3
// realizar la consulta
ObjSet := Services.ExecQuery('SELECT * FROM Win32_Product',
 'WQL', wbemFlagReturnImmediately and wbemFlagForwardOnly , nil);

A partir de ahí basta con recorrer los elementos obtenidos y e nuestro caso formatear algunas propiedades para mostrarlas (Caption, InstallDate, Vendor y Version), aunque todas las demás están igualmente a disponsición del programador.

Recordad de colocar en el USES las dos units comentadas antes.

Se puede descargar el código de ejemplo desde aquí y el ejecutable compilado desde aquí.

<Ejemplo_sources>

<Ejemplo_Ejecutable>

(*NOTA*): Recordemos (link), que una de las características de WMI es que permite «Administración remota», con lo que si tenemos los suficientes permisos, este código también puede servir para inventariar otras máquinas.