FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Iconos de escritorio
Hola a todos, dos preguntas :
1-. Me podrían indicar con que función puedo acceder a los iconos del escritorio y cambiarles la posición. 2-. Con que función puedo obtener la hora del hwClock. Muchas gracias de antemano. Última edición por Nil fecha: 02-11-2004 a las 02:18:43. |
#2
|
|||
|
|||
¿Alguien sabría decirme algo de esto?
Gracias. |
#3
|
||||
|
||||
No se que es la hora HWclock, pero para obtener la hora puedes usar la funcion time.
Código:
Edit1.text := TimeToStr(time); Espero que te sirva (que me da que no). Respecto a los iconos no tengo ni idea.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5 |
#4
|
|||
|
|||
Hola Durbed, gracias por responder, pero la solución que me das devuelve la hora de Windows, no la hora interna de la máquina, y si al usuario se le ocurre cambiarla, será una distinta a la real.
|
#5
|
||||
|
||||
Y tampoco sé a qué te refieres con la hora del hwClock pero a fin de cuentas Windows toma la hora del hardware de la máquina. Quizá te refieras a algo como GetTickCount que te devuelve el número de milisegundos que han pasado desde que se inició el sistema, independientemente de si el usuario cambia o no la hora, con lo que puedes fabricarte tu propio "reloj" al iniciar el sistema para no tener que depender de la hora del sistema. La única limitante es que el TickCount se reinicia a cero después de 49.7 días de uso continuo.
// Saludos |
#6
|
|||
|
|||
Iconos de escritorio
Hola Roman, yo pensaba que la hora del relog de la bios era independiente de la hora de Windows, es posible que esté equivocado.
Lo que mas me urge es el tema de mover mediante código la posición de los iconos del escritorio. Un saludo, y gracias por vuestro interés. |
#7
|
||||
|
||||
Cita:
La situación es la siguiente: Visualmente, el escritorio no es más que un ListView cuyo identificador puedes obtner fácilmente con:
con lo que en pricipio podrías mandarle el mensaje LVM_SETITEMPOSITION:
El problema es que ItemPos se localiza en el espacio de memoria asignado a tu aplicación y el ListView del escritorio espera los datos en su propio espacio de memoria. Dicho de otra forma, no puedes acceder a datos de la memoria de otra aplicación. Para resolver esto he visto que usan varias técnicas dependiendo del sistema operativo. En Windows 9x parece que puedes usar Memory Mapped Files pero no en Windows NT (XP, 2000) en donde o bien usan una DLL o bien funciones especiales de la API para obtener memoria en el espacio de otra aplicación. Michael Winters, en un hilo de los grupos de noticias de Borland, proporciona un ejemplo muy completo para interactuar con el ListView del escritorio. La unidad que a continuación te pongo es una versión sumamente simplificada de su código que sirve únicamente para el caso de Windows NT (XP, 2000).
Para usarla tienes que crear una instancia de TVMemory pasándole el identificador del proceso de la aplicación que contiene al ListView:
Para establecer la posición de un icono harías algo así:
donde Index será el índice del icono que desees cambiar. Cómo obtienes este índice dependerá de cómo pretendas manipular los iconos pero quizá podrías obtener de entrada la posición e índice de todos ellos usando LVM_GETNEXTITEM y LVM_GETITEMPOSITION. Para el útlimo tendrías que usar VMemory con Read en lugar de Write. // Saludos |
#8
|
|||
|
|||
Hola Roman, una explicación magistral.
Muchas gracias lo probaré. Un saludo. |
#9
|
||||
|
||||
De verdad que es excelente la explicación, pero me pregunto: cuando apago mi equipo todas las propiedades del ListView se almacenan en algún lugar del disco duro, en dónde? Y si sé cuál es el archivo no podría modificarlo de tal manera que al actualizar el escritorio se tomen los valores del archivo?
Como siempre, de antemano muchas gracias.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre. |
#10
|
||||
|
||||
Se me ocurren dos posibilidades, a saber:
1.- En un archivo oculto dentro del directorio que contiene los iconos, que en el caso del escritorio sería algo así como "C:/Documents and settings/<usuario>/desktop". 2.- En el registro de Windows: escondido en alguna parte de HKEY_CURRENT_USER o de HKEY_CURRENT_CONFIG. Que conste que ni lo he comprobado, pero a mi me parece lo más lógico. |
|
|
|