Siguiendo la línea del artículo anterior, les dejo otro ejemplo de uso del RUNDLL32.EXE de Windows para llamar utilidades del Panel de Control almacenadas en el archivo SHELL32.DLL.
En esta oportunidad, les dejo otro pequeño ejemplo que permite abrir la utilidad para cambiar la Fecha y Hora del sistema. Agregué otra función que permite invocar la utilidad para cambiar la Configuración Regional.
A modo de Bonus Track, incluyo una función que permite Abrir y Cerrar una unidad de CD/DVD utilizando la función API mciSendString( ), contenida en el archivo MMSYSTEM.DLL.
A continuación les dejo el código fuente del ejemplo:
********************************************************************************************
* Programa : DATETIME
* Descripción: Permite abrir la utilidad para cambiar fecha y hora de Windows,
* se añadió utilidad para configuración regional y función para abrir y cerrar
* unidad de CD/DVD.
* Autor : Rodrigo Dinamarca M.
* Obs. : Probado en Windows 7
********************************************************************************************
SET PROCEDURE TO DATETIME
SET ERASE VIDEO TO 112
ERASE
cB1 = "Establecer Fecha y Hora"
cB2 = "Configuración Regional"
cB3 = "Cerrar"
cB4 = "* Bonus Track: ABRIR Unidad de CD/DVD"
cB5 = "* Bonus Track: CERRAR Unidad de CD/DVD"
CREATE BUTTON cB1 AT 2,5 SIZE 2,45
CREATE BUTTON cB2 AT 5,5 SIZE 2,45
CREATE BUTTON cB3 AT 8,5 SIZE 2,45
CREATE BUTTON cB4 AT 11,5 SIZE 2,45
DO WHILE .T.
nEvent = CHKEVENT()
DO CASE
CASE nEvent = 1
IF LASTKEY() = 27
EXIT
ENDIF
CASE nEvent = 5
EXIT
CASE nEvent = 6
DO CASE
CASE BUTTON() = cB1
SetDateTime()
CASE BUTTON() = cB2
RegionalConfig()
CASE BUTTON() = cB4
REPLACE CONTROL cB4 WITH cB5
OpenCDDVD(1)
CASE BUTTON() = cB5
REPLACE CONTROL cB5 WITH cB4
OpenCDDVD(2)
OTHERWISE
EXIT
ENDCASE
ENDCASE
ENDDO
RETURN
****************************************
FUNCTION SetDateTime()
* WRUN c:\windows\rundll32.exe c:\windows\system\shell32.dll,Control_RunDLL timedate.cpl @0,0 // FECHA Y HORA para Windows 95 y 98
WRUN C:\WINDOWS\SYSTEM32\RUNDLL32.EXE C:\WINDOWS\SYSTEM32\SHELL32.DLL,Control_RunDLL timedate.cpl @0,0
RETURN("")
****************************************
FUNCTION RegionalConfig()
*WRUN c:\windows\rundll32.exe c:\windows\system\shell32.dll,Control_RunDLL intl.cpl @0,0 // CONFIGURACIÓN REGIONAL para Win 95/98
WRUN C:\WINDOWS\SYSTEM32\RUNDLL32.EXE C:\WINDOWS\SYSTEM32\SHELL32.DLL,Control_RunDLL intl.cpl @0,0 // CONFIGURACIÓN REGIONAL
RETURN("")
****************************************
FUNCTION OpenCDDVD() // ABRIR Y CERRAR LA PUERTA DEL LECTOR DE CD
PARAMETERS p_nAction
DECLARE PFUNC mciSendString RETURNING INTEGER IN DLL mmsystem.dll
IF EMPTY(PCOUNT())
p_nAction = 1
ENDIF
returnstring = SPACE(127)
IF p_nAction = 1
errornum = mciSendString("set CDAudio door open", ALLTRIM(returnstring), toint(127), toint(0))
ELSE
errornum = mciSendString("set CDAudio door closed", ALLTRIM(returnstring), toint(127), toint(0))
ENDIF
IF errornum <> 0
MESSAGE("Operación Cancelada","No se ha establecido contacto con la unidad de CD/DVD")
ENDIF
RETURN("")
También les dejo algunas capturas de la ejecución del ejemplo:
![]() |
| Controles de la Aplicación |
![]() |
| Utilidad para cambiar Fecha y Hora abierta desde la aplicación |
![]() |
| Utilidad para cambiar la Configuración Regional abierta desde la aplicación |
Pueden descargar el programa de ejemplo directamente dede
MEDIAFIRE
FILESERVE
Tema del próximo artículo:
Uso de solapas para administrar visualización de controles.
OBS:
- Para quienes hayan descargado el Anuario de ejemplo: para una correcta ejecución copiar la carpeta "Anuario", la que contiene la aplicación, en la raíz del disco C:
- Para seguir publicando artículos, es necesario el apoyo de los lectores mediante comentarios, o registrándose como seguidores del Blog. Toda iniciativa tendrá fuerza en la medida de que los interesados participen activamente. Saludos y agradecido desde ya.



0 comentarios:
Publicar un comentario en la entrada