En esta ocasion veremos como crear un elemento para el panel de control de windows y como ejecutar una aplicacion desde esta, los elementos del panel de control nos pueden de ser de utilidad para configuraciones de aplicaciones o servicios. Personalmente lo uso para configurar y manejar el estado de un servicio de windows, es una manera facil para que los usuarios de nuestras aplicaciones puedan usuarlas.
Empezaremos por lo mas imporante, un CPLApplet (Control panel applet) no es mas que una dll comun que por lo general tiene una extesion .cpl y que exporta la funcion CPlApplet (__stdcall) el cual es el punto de entrada para el applet.
La funcion CPlApplet recibe 4 parametros que son los siguientes.
Parametros
- hwndCPl
- Identificador de la ventana principal. Use el parametro hwndCPl para dialogos u otras ventanas que requieran un manejador de la ventana padre.
- uMsg
- El mensaje enviado al “Control Planel Application”.
- lParam1
- Informacion adicional para un mensaje especifico.
- lParam2
- Informacion adicional para un mensaje especifico.
Ya que conocemos los parametros recibidos por la funcion, vamos a ver los tipos de mensajes que recibe uMsg.
Control Panel messages.
CPL_DBLCLK:
Mensaje enviado cuando el usuario selecciona un icono asociado a un elemento del panel de control, el valor del parametro Param1 indica el valor del indice del elemento, el valor del parametro lParam2 es un puntero a una estructura CPLINFO or NEWCPLINFO regresada por el mensaje CPL_INQUIRE o CPL_NEWINQUIRE. El valor regresado es ignorado.
CPL_EXIT:
Mensaje enviado despues del ultimo mensaje CPL_STOP, Windows usa FreeLibrary para liberar la dll y sus respectivos recursos. El valor regresado es ignorado.
CPL_GETCOUNT:
Mensaje enviado despues de CPL_INIT, debe regresar el numero de subprogramas soportados.
CPL_INIT:
Mensaje enviado despues de ser cargado el elemento en el panel de control.
CPL_INQUIRE:
Mensaje enviado despues de CPL_GETCOUNT, debe proveerse la informacion especifica de cada subprograma, el valor del parametro lParam1 indica el indice del subprograma, el valor del parametro lParam2 es un puntero a una estructura CPLINFO. El valor de regreso es ignorado.
CPL_NEWINQUIRE:
Mensaje similar a CPL_INQUIRE.
CPL_STARTWPARMS:
Mensaje similar a CPL_DBLCLK.
CPL_STOP:
Envia un mensaje para deter el elemento del panel del control para antes de descargar la extesion del panel de control.
Bien ahora que ya conocemos la estructura de la funcion CPlApplet, vamos a crear un ejemplo en VS2008, tambien puede usar Visual C++ express edition, o su compilador de C/C++ favorito.
Vamos a crear una dll convencional y a incluir el archivo cpl.h el cual contiene los mensajes e informacion necesaria del cplapplet.
#include <cpl.h>
Y a escribir el codigo correspondiente usando la funcion mencionada anteriormente y exportandola.
En el ejemplo que escribi el applet muestra la calculadora de Windows, ustedes pueden mostrar un dialogo o ventana escrito en la misma dll, pero eso no se limita ahi, como esta en el ejemplo pueden llamar a una ventana de configuracion escrita en .Net, etc…
Veamos una captura de pantalla de como se muestra nuestro elemento en el panel de control.
Les dejo aqui el ejemplo.
Cualquier comentario o duda a [me (en) hard-bit.net]
