Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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
  #2  
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
¿Y por qué no ha de funcionar?

Código:
Pseudo código:

IF (param(1) = 'win') OR (opcion_registro = 'min') THEN
  IniciarMinimizada
ELSE
  IniciarNormal
ENDIF
Es decir, la aplicación iniciará minimizada siempre que el parámetro de la línea de comandos sea 'win' o en el registro de Windows se establezca la opción 'min'

La opción del registro se establece cada vez que el usario cierra la aplicación con tal opción seleccionada. Pero aún cuando no haya sido así, el parámetro 'win' le indicará que inicie minimizada.

La lectura aquí es que en lugar de complicarnos la vida buscando métodos para detectar si Windows está inciando sesión, le ayudamos un poco pasando ese parámetro. Claro está que si alguien inicia la aplicación pasando explícitamente el parámetro, se iniciará minimizada, pero no creo que sea algo para quitarnos el sueño.

// Saludos
Responder Con Cita
  #3  
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,

Supón roman que se han escrito en el "Registro" las opciones "win" y "min". Supón que la aplicación se inicia con Windows, y, efectivamente, se comprueba la existencia del parámetro "win" y, por tanto, se inicia la aplicación "minimizada".

En este caso "min" no es necesario, puesto que, como la aplicación se inició con Windows, ha de iniciarse "minimizada" de todas, todas: sin contar con la opción "min". Así es como parece requerirlo Tecnic2.

Pero ahora ponte en que el usuario cierra la aplicación y ha dejado claro en las opciones que él quiere que esta no se inicie "minimizada", pero, ojo, que no se inicie "minimizada" si la vuelve a abrir él, porque, como creo y digo, si la aplicación se inicia con Windows habrá de iniciarse "minimizada", independientemente de lo que el usuario determinara.

¿Qué hacemos? ¿Borramos del registro el valor "min"?

Continuando. Si el usuario vuelve a iniciar la aplicación antes de cerrarse Windows, al inicio de la misma y buscar el valor "min" este no estará, pero sí estará el valor "win", y así la aplicación se iniciará "minimizada", que es lo que el usuario no quiere...

Entonces, ¿si el usuario cierra el programa y no quiere que se inicie la aplicación "minimizada" borramos el valor "min" y quitamos de la ruta del programa el parámetro "win"?

Bien. En ese caso, desde luego, se conseguirá que la aplicación no inicie "minimizada", pero, ¡cuando se inicie con Windows tampoco lo hará! Y es, precisamente, el caso, que cuando se inicie con Windows la aplicación ha de hacerlo "minimizada": independientemente de los parámetros "win" y "min".

La probable chapuza que se me ocurrió, tras proponer una solución similar a la tuya, roman, no tiene que estar pendiente de si se inicia la sesión en Windows. De hecho esa es otra: la propuesta solución no funcionará (se me olvidó comentarlo arriba) si el usuario cierra e inicia luego la sesión: solamente lo hará si se reinicia Windows, o se inicia, simplemente, desde un principio, esto es, luego de haberse apagado el sistema.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-06-2005 a las 01:27:59. Razón: (corrección del texto)
Responder Con Cita
  #4  
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
Creo que no estás captando la idea.

win y min son dos cosas totalemente distintas aun cuando ambas se guarden en el registro.

win es un parámetro en la línea de comandos de la aplicación. Siempre que se ejecute la aplicación con ese parámetro correrá minimizada sin importar más nada. Pero ese parámetro sólo lo usaremos en

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

que es donde se indican las aplicaciones que iniciarán junto con Windows:

miaplicacion --- miaplicacion.exe win

Siempre que esté esta entrada en el registro se correrá minimizada la aplicación cuando inicie Windows y sólo entonces pues será el único lugar donde le pasemos ese parámetro en la línea de comandos.

Si la aplicación se corre posteriormente, esa entrada del registro ya no cuenta para nada. Esa entrada no la lee nuestra aplicación directamente sino el mismo Windows al iniciar.

Enfatizo:

En corridas subsecuentes, la aplicación no encontrara ese parámetro con ParamStr pues no se le especifica en la línea de comandos.

Entonces, no habiendo tal parámetro, la aplicación leera del registro el valor de

min que es una entrada en

HKCU\Software\miaplicacion

que es donde normalmente se guardan configuraciones de la aplicación:

modo_inicio -- min

y el valor dependerá de lo que haya escogido el usuario. Si el usuario decide no iniciar minimizado el valor desaparecerá o valdrá otra cosa:

modo_inicio -- normal

pero como la aplicación, cuando se incia desde otro lugar que no sea en

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

no encuentra nada de win, iniciará en modo normal.

// Saludos
Responder Con Cita
  #5  
Antiguo 03-06-2005
Tecnic2 Tecnic2 is offline
Miembro
 
Registrado: may 2004
Posts: 155
Poder: 21
Tecnic2 Va por buen camino
Thumbs up Cuando lo pruebe os informo

Muchas gracias por todo, hasta pronto.
Responder Con Cita
  #6  
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,

Sin duda, no solamente no he captado la idea, pero, no he sabido explicarme y además he hecho el ridículo y he quemado una de las dos neuronas que me quedaban sin tino ni concierto.

Aún y sabiendo que estabas en lo cierto, roman, he releído tu última respuesta dos o tres o cuatro veces, porque, ¿cómo iba a ser posible que le diera ayer tantas vueltas y que la solución fuera la que yo mismo propuse, aunque mal explicada, al inicio de este hilo?

Pues es posible... ya lo creo que sí. Efectivamente, la aplicación no ha de leer la entrada del "Registro" de Windows en:

"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

Sino que será el propio Windows el que lea dicha entrada al iniciarse y solo en este punto: no en sucesivas ocasiones en que la aplicación sea ejecutada.

Terminaré esto aquí dándote la razón y pidiéndote disculpas, roman, por, de algún modo, haber tratado de quitártela. No era mi intención, aunque, no puedo negar que tal vez traté de hacerlo ladinamente, y no diré más.

He de plantearme si no me ocurre "algo" que hace que me ciege en determinados momentos, que no pueda salir de mi primer pensamiento, precisamente, por no estar pensando bien, o, de otro modo, por desplazar ese pensamiento y poner otro en su lugar fastidiándolo todo.

Pero este es otro cantar que nada tiene que ver aquí y ahora. Me reitero en mis disculpas roman: creo que Tecnic2 puede conseguir lo que planteaba siguiendo tus respuestas, y obviando las mías, por lo menos, desde un principio.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-06-2005 a las 10:20:33. Razón: (corrección del texto)
Responder Con Cita
Respuesta



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 02:24:01.


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