25 de agosto de 2010

Abrir utilidades para cambiar Fecha y Hora del sistema, y Configuración Regional

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 MEGAUPLOAD.

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