Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Como cambiar el texto del reloj (https://www.clubdelphi.com/foros/showthread.php?t=69995)

masedano 23-09-2010 21:27:09

Como cambiar el texto del reloj
 
Hola :)

Ya hice esta pregunta hace un tiempo y quisiera exponerla de nuevo, con algún dato mas:
Estuve buscando y no encontré (o no busqué bien) como cambiar el texto del reloj.
Encontré un programa llamado WinCalendarTime el cual cambia el reloj de windows, agrandándolo y mostrando mas información.
Quise copiar esta funcionalida pero no pude.
Vi en uno de los hilos (Hint del reloj de Windows - 53838) que iban a modificar un programa escrito en C, pero no avisaron si lo habían echo o si lo iban a compartir.

El código que yo hice, para probar cambiar el mensaje, es el siguiente.

Código Delphi [-]
procedure TFClock.Button2Click(Sender: TObject);
var
  hShell_TrayWnd: THandle;
  hTrayNotifyWnd: THandle;
  hClockWClass: THandle;
  Texto: PChar;
begin
  hShell_TrayWnd := FindWindow('Shell_TrayWnd', nil);
  hTrayNotifyWnd := FindWindowEx(hShell_TrayWnd, 0, 'TrayNotifyWnd', nil);
  hClockWClass := FindWindowEx(hTrayNotifyWnd, 0, 'TrayClockWClass', nil);
  Texto := 'HOLA';
  SendMessage(hClockWClass, WM_SETTEXT, 0, LongInt(Texto));
end;


Lo "raro" es que si veo las propiedades del hClockWClass me dice que el "caption" es HOLA, pero en pantalla no se actualiza.
Luego probé con

Código Delphi [-]
  SendMessage(hClockWClass, WM_SETTEXT, 0, LongInt(Texto));
  Windows.SendMessage(hClockWClass, WM_PAINT, 0, 0);


pero tampoco funcionó.

Hice algunas pruebas mas pero el texto del reloj sigue ahi... inalterable :o...

Si alguien puede darme una mano, desde ya muy agradecido.


Saludos

rgstuamigo 23-09-2010 22:52:06

No te entiendo exactamente lo que estás tratando de hacer..???:confused:
¿A qué le llamas "Texto del reloj"?
Si lo que estás tratando es cambiar el Caption de la ventana de propiedades de Fecha y hora, pues sencillamente lo puedes hacer así:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  h1:HWND;
begin
   h1:=FindWindow(nil,'Propiedades de Fecha y hora');//Busco la ventana que tiene ese caption
    if h1 <> 0 then // si se ha hallado un handle válido
    SetWindowTextW(h1,'HOLA');// procedo a cambiarle el caption
end;
Saludos...:)

masedano 23-09-2010 23:25:37

Muchas gracias por la pronta respuesta y disculpa, no me expliqué bien.

Cuando me refería a el "texto del reloj" quise decir la hora.
El que aparece abajo a la derecha, en el systemtray.
Es decir, en lugar de que salga "17:15" quiero que salga "23/09/2010, 17:15:17".

Para probar, quise poner el "HOLA" pero no pude.

rgstuamigo 23-09-2010 23:39:41

Pues en ese caso hubiera sido mejor poner un título :"Como cambiar el formato de Fecha y Hora en Windows" no lo creés?;)
De todas formás lo puedes hacer directamente desde Windows tal como se indica aquí o aquí.;) y si eso no te es suficiente Aquí hay más todavía.:)
Saludos...:)

masedano 24-09-2010 02:40:05

:D naaaaaaaaa
No es eso lo que necesito :D:D:D:D
Evidentemente no me expreso bien hoy...

Lo que quiero es poner "cualquier" texto en el "cuadradito" que ocupa el reloj.
Fijate que quise usar las llamadas de API de windows con WM_SETTEXT y el texto que envío no se muestra.

Es como que el texto llega al control pero no se visualiza.
Es mas, me gustaría ampliar el espacio que ocupa el reloj y hacerlo mas grande para poner funcionalidad adicional, como un botoncito o algo asi.

Espero haberme explicado bien.
Aqui dejo un link a un gráfico de ejemplo, donde muestro como funciona el WinCalendarTime. Por lo que estuve investigando, cambia el tamaño del reloj, pone texto a gusto (actualiza mostrando segundos, inclusive) y cuando se pulsa una combinación de teclas o se hace click sobre el, se muestra un calendario que queda por encima de todas las ventanas hasta que pulsas la combinación de teclas, de nuevo o haces click nuevamente.

h t t p : / / p i c a s a w e b . g o o g l e . c o m / l h / p h o t o / V d U F x 8 _ U N H 8 m T e 9 u V c i 9 v 5 y g 5 H h s U u R u 0 j 1 P k P 8 o w S w ? f e a t = d i r e c t l i n k

Disculpa que ponga el link de esta manera, pero si no me dice que no tengo permisos para poner un link.

Saludos!!!

Casimiro Notevi 24-09-2010 11:15:57

Cita:

Empezado por masedano (Mensaje 377362)
h t t p : / / p i c a s a w e b . g o o g l e . c o m / l h / p h o t o / V d U F x 8 _ U N H 8 m T e 9 u V c i 9 v 5 y g 5 H h s U u R u 0 j 1 P k P 8 o w S w ? f e a t = d i r e c t l i n k

Creo que es suficiente con que quites una letra :)

ttp://picasaweb.google.com/lh/photo/VdUFx8_UNH8mTe9uVci9v5yg5HhsUuRu0j1PkP8owSw?feat=directlink


La franja horaria es GMT +2. Ahora son las 01:33:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi