Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Si, pero.....

Si, perfecto, pero y si en mi programa el usuario activa la opción de iniciar minimizado con windows, cierra el programa y lo quiere volver a abrir? Entoces quiero que se abra de forma normal, no minimizado. Pero la opción en el registre debe seguir allí.

Me explico?
Responder Con Cita
  #2  
Antiguo 02-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé cómo lo harás tú. Cuando he hecho algún programa que tuviera la posibilidad de iniciarse con Windows una de las opciones de dicho programa era, precisamente, esa, esto es, le daba al usuario la posibilidad de elegir si iniciar el programa junto con Windows o no hacerlo.

Quiero decir que, al cerrar el programa (o cuando quiera que compruebes las opciones del mismo, y, claro está, siempre que incluya la que te comento) compruebas la elección del usuario al respecto y entonces la cosa está clara: escribes/sobreescribes la clave/el valor correspondiente del Registro de Windows según el caso.

De no ser así, puesto que dices que el programa tiene una opción para que el usuario decida si quiere comenzar con el programa "minimizado" o no, podrías aprovechar el momento de guardar dicha opción para lo mismo que digo más arriba: escribir/sobreescribir la clave/el valor del Registro de Windows según sea menester.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 02-06-2005 a las 18:00:42. Razón: (corrección del texto)
Responder Con Cita
  #3  
Antiguo 02-06-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Post Me parece que no nos entendemos

Pongamos un caso práctico:

Arranca el windows y como en mi programa está puesto que arranque al inicio pues lo hace, y minimizado en el tray, apareciendo solo un icono al lado del reloj.
Cuando le doy al icono, la ventana principal aparece, trabajo con mi programa y finalmente le doy al botón de cerrar, el programa se cierra por completo. Seguidamente, sin cerrar windows necesito volver a mi programa, pues lo que hago es ir al acceso directo en mi escritorio o a través del menú inicio de windows y lo abro. Lo normal es que se abra otra vez minimizado, pero ahora quiero que lo haga de forma normal y no minimizado, solo lo quiero minimizado cuando inicio windows o cuando lo minimizo yo mismo.

A ver si ahora tengo suerte :P
Responder Con Cita
  #4  
Antiguo 02-06-2005
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 21
vic_ia Va por buen camino
hola...

entonces supongo que podrias hacer una de dos :

1) cuando el usuario selecciona cerrar tu programa debes colocar en el evento OnCloseQuery, alguna acción para que en vez de cerrarlo simplemente lo "minimice" tu aplicación...

2) crear una pequeña apliación que sea la que se inicie con windows y que al hacer click sobre ella en el area de los tray icons lo que haga sea arrancar la aplicación que ahora tienes, al cerrar tu aplicacion normal la que esta en el area del "reloj" seguira estando activa para cuando volver a ejectar tu aplicacion

saludos...
Responder Con Cita
  #5  
Antiguo 02-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Efectivamente, no nos hemos entendido, o, por mejor decir, desde luego, yo no pude entender el problema, puesto que me lanzé a bote pronto a tratar de solucionarlo y, puede leerse, lo que he propuesto no lleva a ningún sitio, como bien dices.

Voy a proponer una solución que probablemente sea un tanto chapuza. Espero que no lo sea tanto, o que, en todo caso, puedas hallar otra solución al problema y mejor que la que a continuación trataré de explicar.

Propongo que añadas al programa, además de la opción "iniciar minimizado", otra opción "iniciar con Windows".

Propongo utilizar el "truco" de nombre "Diferir el borrado de ficheros" publicado en la Web de Ian Marteens.

En dicho truco se muestra cómo conseguir que un determinado archivo sea borrado por Windows cuando este se inicie.

A ver. Si no lo he entendido todo mal, tu programa ha de iniciarse "minimizado" de todas, todas, siempre que este se inicie con Windows, incluso si el usuario tiene "desmarcada" la opción correspondiente ("iniciar minimizado").

Sería al cerrarse tu programa cuando guardaras las opciones del usuario, al menos las que nos ocupan: "iniciar minimizado" e "iniciar con Windows".

Si el usuario dejó "marcada" la opción "iniciar con Windows" también tendrías que escribir en el "Registro" la ruta de tu programa en la "clave" oportuna, pero, ya sin "parámetro" ninguno, por lo menos sin el que yo propuse más arriba. Esto lo harías también al cierre de tu programa.

Además de lo dicho, al cerrarse el programa, tendrías también que crear un archivo, un fichero, (que no tendría que contener nada, podría perfectamente estar "vacío"), en la "carpeta temporal de Windows", por ejemplo.

Además de eso, y, acto seguido, utilizarías la función que propone Ian Marteens en el "truco" mencionado antes.

Esta función dejaría al archivo "temporal" listo para ser borrado por Windows (1) al iniciarse este.

El archivo tendría que llamarse siempre igual y situarse en el mismo lugar (2), de tal manera que después pudiera comprobarse su existencia.

¿Me explico? Vayamos a lo práctico. Si el programa ha sido iniciado por Windows, porque así lo determinara la opción correspondiente, y, el usuario lo cerrara antes de cerrarse Windows, al cierre del programa se llevaría a cabo todo lo dicho: se comprobarían las opciones, se guardarían y se crearía el archivo temporal.

De este modo, y, siempre que el usuario volviera a iniciar el programa (en la misma "sesión") además de recuperar las opciones del usuario, comprobaríamos la existencia de dicho archivo temporal: de existir el archivo esto nos indicaría que el programa ya se ejecutó y fue cerrado por el usuario, que ahora vuelve a iniciarlo.

En este caso solamente iniciarías el programa "minimizado" si la opción "iniciar minimizado" estuviera "marcada" por el usuario.

En sucesivas ocasiones en que se inicie Windows, si este inicia tu programa porque así estuviera determinado en el "Registro", comprobarías, antes incluso de la opción "iniciar minimizado", la existencia del archivo temporal de que venimos hablando.

Si dicho archivo temporal no existe es que Windows acaba de iniciarse (y lo ha borrado) (3) de tal modo que tú harías que el programa se iniciara "minimizado", independientemente ya de la opción correspondiente: se inicia el programa junto a Windows, por lo tanto, el programa se inicia "minimizado" de todas, todas.

Insisto en que tal vez todo esto pueda resultar una chapuza inadmisible: empero, puede funcionar, y, o bien a alguien se le ocurre otra cosa (probablemente, yo me incluyo) o mal...

Ya comentarás si lo dicho puede servir como solución al problema, qué otros problemas plantea, o, en fin, cómo te va con la cuestión que nos ocupa.

Notas:

(1) La función que se utiliza en el "truco" "Diferir el borrado de ficheros" de Ian Marteens, y, según el propio autor declara, solamente "vale" para Windows NT, 2000, XP y/o 2003. Sin embargo, el propio autor refiere que en Windows 9x puede conseguirse "lo mismo", pero utilizando el archivo "WinIni". Sería cuestión de averiguar cómo hacerlo de este modo, siempre que fuera necesario.

(2) El nombre/la ruta del archivo temporal podría ser "aleatorio" (de lo contrario procura darle un nombre que difícilmente pueda coincidir con otro archivo que pueda haber creado otro programa). Podría tal vez, a la vez que se crea el archivo temporal (con su ruta a nuestra disposición), guardarse esta en algún lado: junto a las opciones, en el "Registro", etc., de manera que luego, cuando es menester, pueda averiguarse dónde se encuentra, esto es, pueda comprobarse su existencia.

(3) He comprobado que en Windows XP, efectivamente, funciona el "truco" "Diferir el borrado de ficheros", esto es, Windows borra al inicio el archivo/fichero que previamente se indicó. Sin embargo, esto plantea el siguiente problema, ¿lo borra antes o después de iniciar los programas que sean menester? Debería comprobarse esto, tanto en el caso de Windows NT, etc., como de Windows 9x.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-06-2005 a las 00:06:38. Razón: (corrección del texto)
Responder Con Cita
  #6  
Antiguo 03-06-2005
bumiga bumiga is offline
Miembro
 
Registrado: sep 2004
Posts: 28
Poder: 0
bumiga Va por buen camino
Hola, mira este artículo de delphi.about http://delphi.about.com/od/kbwinshell/l/aa121801a.htm ahí encontras todo lo que necesitas para hacer que una aplicación que se ejecute minimizada en el tray.
Responder Con Cita
  #7  
Antiguo 03-06-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿No se complican demasiado?

En el registro de Windows, donde especifican que se inicie la aplicación al comenzar la sesión en lugar de simplemente poner

miaplicacion.exe

ponen

miaplicacion.exe win

Cuando la aplicación inicie, leerá el primer parámetro: ParamStr(1). Si es = 'win' sabrá que se ejecuta al iniciar Windows y correrá minimizado en la bandeja. De cualquier ora manera que inicien la aplicacíon, mientras no especifiquen este parámetro, la aplicación iniciará normal.

// Saludos
Responder Con Cita
  #8  
Antiguo 03-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

roman, no me creo que tú también cayeses en la "trampa" (es broma) en que he caído yo cuando propuse mi primera posible solución. El problema radica en que la aplicación ha de iniciarse siempre "minimizada" si esta se inicia con Windows.

De no ser así, esto es, si es el usuario el que inicia la aplicación, entonces la misma se iniciará "minimizada" dependiendo de la opción "minimizar al iniciar", que el usuario puede establecer.

Entonces, ¿estás seguro roman que lo que propones funcionaría? Uf... si fuera así qué bien, porque lo que he planteado más arriba tiene tela... ya lo he reconocido...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-06-2005 a las 00:27:47. Razón: (aclaración)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:54:19.


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
Copyright 1996-2007 Club Delphi