Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   esperar que el windows termine de cargar todo para iniciar aplicacion dephi (https://www.clubdelphi.com/foros/showthread.php?t=77767)

petete2008 24-02-2012 19:54:17

esperar que el windows termine de cargar todo para iniciar aplicacion dephi
 
Tengo una aplicación delphi en el inicio de windows y mi pregunta es como saber cómo ejecutarla una vez haya cargado todo el sistema (iniciar windows).
Mi problema en concreto es que mi programa delphi se carga antes que las conexiones de redes y claro al utilizar sockets me da un error.
Quisiera que mi programa fuese el último en cargarse tras un reinicio o arranque del windows.
Gracias.

ecfisa 24-02-2012 21:00:50

Hola petete2008.

Yo lo manejaría mediante un archivo de proceso por lotes, llamémoslo LANZADOR.BAT, con el siguiente contenido:
Código:

@ECHO OFF
TIMEOUT /T 30
START C:\TU_DIRECTORIO\TU_APLICACION

Luego lo pondría en la carpeta inicio... pero te va a aparecer una fea pantallita, por lo que a su vez haría una aplicación de consola que llame al lanzador ocultando la ventana y esta sí es la que pondría en la carpeta inicio:
Código Delphi [-]
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,ShellApi;

const
  SW_HIDE = 0;

begin
  ShellExecute(Handle, 'OPEN','CMD', ' /C C:\LANZADOR.BAT', nil, SW_HIDE);
end.

Saludos.

roman 24-02-2012 21:04:14

¿Dónde cargas la aplicación?

// Saludos

mamcx 24-02-2012 21:09:10

Cita:

Empezado por petete2008 (Mensaje 426024)
Tengo una aplicación delphi en el inicio de windows y mi pregunta es como saber cómo ejecutarla una vez haya cargado todo el sistema (iniciar windows).
Mi problema en concreto es que mi programa delphi se carga antes que las conexiones de redes y claro al utilizar sockets me da un error.
Quisiera que mi programa fuese el último en cargarse tras un reinicio o arranque del windows.
Gracias.

La manera correcta es detectar el error y reaccionar de forma apropiada, no tratar de hackear las cosas.

Si un programa depende de conexion de red, debe asumirse que en cualquier momento y por cualquier razon esa conexion fallara.

De donde sacas tu que es el hecho que windows arranque todo el que te dara conectividad? Eso es una *suposicion* que te va a fallar.

Asume que la conexion se cae y PUNTO. Duermes el programa por un rato, reintentas N veces y ya. Mucho mejor si te enlazas al notificador de red de windows:

http://stackoverflow.com/questions/3...on-with-delphi

PD. Usa la version con WinInet no la de registro.

Aunque esto NO GARANTIZA que hay conexion. La unica manera es haciendo ping a tu servidor (o a google o apple u otro domino que seguro esta online):

Como ves, determinar que tienes conectividad es mas alla de ASUMIR que la tienes, es COMPROBAR.

ecfisa 24-02-2012 21:21:40

Hola.

Coincido plenamente con lo dicho por mamcx, es la aplicación la que debe verificar la conectividad y comunicar y/o manejar cualquier anomalía que se presente.

Pero mi sugerencia apuntaba más concretamente a lo dicho por petete2008:
Cita:

Quisiera que mi programa fuese el último en cargarse tras un reinicio o arranque del windows
Un saludo. :)

bosster_018 26-02-2012 19:27:01

Como inicias tu programa? con el famosos registro de windows (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)

O poniendo un acceso directo en el menú inicio de usuario....

Pues por alguna razón me ocurrió algo no tan similar con una aplicación que hice para ejecutarse al iniciar windows....
Ya que yo utilizaba el registro de windows para iniciar mi programa.
Y luego el programa no realizaba las tareas adecuadas pues Windows no se había terminado de cargar, por lo que mi programa quedaba "nulo"

Así que, tal vez, el problema puede ser la manera de iniciar tu aplicación; puedes intentar poniendo un acceso directo en el menú inicio y VERIFICAR que pasa :p

Saludos!

petete2008 26-02-2012 21:43:31

La tengo puesta en el inicio de windows. Me pasa en equipos muy lentos.
Me habéis orientado por lo que os doy las gracias. Lo mejor será como bien se ha dicho en este post que mire si hay conexión y si no hay lo reintente por ejemplo durante 10 segundos y si aún así sigue sin haber conexión dé el error. Gracias!!


La franja horaria es GMT +2. Ahora son las 16:39:03.

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