FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Problema al autoiniciar aplicación
Hola amigos del ClubDelphi…
Tengo un problema que no puedo resolverlo por mi mismo. Empezaré desde el principio a explicar lo que me consterna con un simple proyecto que tengo en mente, pero que por ese motivo no puedo terminarlo. (Por si acaso esta pregunta es demasiado extensa y si querían prepararse un cafecito, háganlo ahora pues hasta que terminen de leer esto, puede que se olviden de hacerlo ) Estoy realizando una aplicación del tipo “Agenda” para informar al usuario que es cumpleaños de la persona anotada en mi aplicación. Este proyecto lo escribí pensando en mis familiares, ya que a la mayoría les es difícil acordarse de los cumpleaños de todos. Así que me propuse a solucionar este problema, mediante una aplicación sencilla pero útil para nosotros. Bueno… Iré al grano… Este proyecto lo tengo terminado (incluso pienso subirlo en los ejemplos de las FTP del ClubDelphi). Mi aplicación consistía en autoiniciarse al encender Windows y mediante código, averiguar si la fecha anotada en la aplicación, concuerda con la fecha del sistema (para saber si hay un cumpleañero). Todo esto lo realizaba de forma oculta para no molestar al usuario. Pero llegó el problema… AL querer iniciar mi aplicación, esta no daba señal de ejecutarse. Ya sé lo que piensan… “El código está mal escrito” pero me puse a indagar a mi aplicación, buscando donde se originaba el problema. Pero no encontré nada. Después de varios intento y código cambiado… Se me ocurrió realizar otra miniaplicación que se autoinicie al encender Windows y en el autocreate realizar un pequeño procedimiento para abrir un archivo. El procedimiento lo realizo con el “ShellExecute” Después de agregar esa pequeña aplicación al inicio de Windows, NO SE EJECUTO EL PROCEDIMIENTO. También lo probé en otra máquina (pensando que el problema era mi CPU). Pero tampoco dio resultado. Al final, después de mucho intentos fallidos, recurro a ustedes, pues mi otra interrogante es que si este problema es general o sólo del Delphi que tengo instalado (Delphi 7). El código lo subí aquí para que prueben por sí mismo. Por si acaso al ejecutar la aplicación (exe), este funciona correctamente. El problema es al iniciarse en Windows que no se ejecuta correctamente pues no realiza nada. Inclusive añadiendo un botón con el procedimiento escrito en el mismo, no fuciona. Por favor, si pueden sacarme de esta duda tremenda que tengo, ya que no me explico por que no quiere ejecutarse bien la llamada al ShellExecute ni tampoco mi aplicación original. En resumen. ¿Ustedes ven algún problema al iniciarse en Windows con esta aplicación? Este mini-ejemplo se encarga de abrir una imagen de los integrantes del ClubDelphi que postearon hace tiempo. (La imagen se abre al crearse la aplicación o al hacer click en la botón de la misma) Ojo: Esta aplicación se deberá probar al iniciar Windows, pues al ejecutarlo manualmente, este sí funciona. Muchas gracias por entrega su valioso tiempo en ayudar a este novatillo, pues inclusive no puedo dormir pensando ¿Qué pasa con eso?. Me despido y espero que me puedan decir que pasa. Lo más probable es que mi Delphi se hay desconfigurado (pero lo dudo). Pero sé que ustedes tienen la respuesta al probar lo que conmigo no funciona. Ahí abajo les dejo el código que no me funciona al ejecutarse en el Inicio de Windows (Auto-Run) Autoiniciar.zip Muchas gracias por su valioso tiempo. Saludos! Última edición por bosster_018 fecha: 01-06-2010 a las 23:47:38. |
#2
|
||||
|
||||
Lo he quitado del 'OnCreate' y lo he pasado al 'OnActivate', le he añadido para que busque en el directorio donde está el ejecutable y ¡¡¡funciona!!!
Código:
procedure TForm1.FormActivate(Sender: TObject); begin regedit(1); ShellExecute(Handle, '', PChar(ExtractFilePath(ParamStr(0))+'\gg.jpg'), '', '', SW_SHOWNORMAL); end; |
#3
|
||||
|
||||
Bueno, aunque parece que Casimiro lo solucionó, solo una tengo una observacion a tu codigo y es este cuestionamiento:¿Por que cada ves que corre tu aplicacion lo registras en los registros de windows(autorun)?
¿Acaso no bastaria con registrarla una sola ves y ya?. Supongo que cada ves que se registra algo en los registros de Windows, el Sistema Operativo lo que hace es tomar en cuenta eso sólo la siguiente ves que se ejecute, es decir al Reiniciarse de nuevo(de ahí que cada ves que instalamos un programa, Windows nos pide que reiniciemos, cosa que segun he visto no sucede con Linux,pues ya diran los linuseros ), pero segun tu codigo, al reiniciarse de nuevo, pues nuevamente registra(Aunque en la misma Key) a tu aplicacion, y es un ciclo que se repite nuevamente.... Quisas lo que debieras hacer es: Antes de registrar tu aplicacion en los registros de Windows, primero deberias verificar si ya antes no se había registrado, para no estar nuevamente registrando.. Pruebalo...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 22-01-2010 a las 16:26:00. |
#4
|
||||
|
||||
Porque en linux no existe (menos mal) el registro de windows, ni el registro de linux
En linux cuando ejecutas un programa, éste mira su configuración y listo, no hace falta reiniciar tras una instalación o actualización. |
#5
|
||||
|
||||
Cita:
Ya esta todo apuntado..ahora lo entiendo...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#6
|
||||
|
||||
Cita:
Saludos. |
#7
|
||||
|
||||
Cita:
Sinceramente es algo extraño esto. Será algún bug en la VCL? Veo muy díficil que el problema sea de Windows porque los eventos aquí involucrados datan de las primeras versiones de Windows y no creo que en tanto tiempo alguien no halla descubierto un problema como este. |
#8
|
||||
|
||||
Ok...
Apuntado..tambien.. Chris...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#9
|
||||
|
||||
Solucionado
Amigo Casimiro... Perdón quise decir: Moderador CasimiroNotevi
El problema lo arreglaste totalmente. Pero no con poner el código en el OnAtivate del formulario, sino con esta parte:
No se porque razón es que si uno no agrega el Path para ejecutar un archivos o mejor dicho localizar el archivo directamente como lo he escrito en el ejemplo:
No se ejecuta normalmente al iniciarse en Windows, pero sí al ejecutarlo manualmente Parece que hace la diferencia al agregar "PChar(ExtractFilePath(ParamStr(0))+'\gg.jpg')" en vez de poner directamente nombre del archivo que queremos localizar en ese momento (asumiendo que está en el mismo directorio) Si lo esciribmos en el FormCreate y en el Botón con lo agregado anteriormente. Este ya puede ejecutarse normalment al iniciarse en Windows, osea FUNCIONA Incluso se resolvió lo escrito anteriormente en este hilo: realmente es necesario especificar el path? La respuesta sería: SI También les informo que con esa simple pero valiosa ayuda que me brindaron. pude terminar mi proyecto pues ya incluí el Path en la sentencia que fallaba al autoejecutarse al iniciar Windows. MUCHAS GRACIAS amigos del ClubDelphi La verdad... Ustedes ayudan bastante... Perdonen si da chiste lo que voy a decir... Pero USTEDES SON UNOS BENDITOS GENIOS Saludos.. Y recuerden agregar el path aunque sea mas trabajoso. |
#10
|
||||
|
||||
Sigo siendo casimiro
Genios, sí, aquí hay algunos genios, pero yo no, lo único que tengo es 24 años programando y el email de quien conoce las respuestas |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema con aplicación MDI | DrkMgc | Varios | 6 | 22-12-2008 20:26:39 |
Problema con aplicación | Dark_RavenM | Varios | 4 | 27-02-2008 05:10:40 |
Problema con Aplicacion MDI | Thales | OOP | 7 | 19-08-2005 15:31:07 |
Problema con mi aplicación | JerS | Varios | 2 | 18-07-2005 16:33:51 |
Problema con aplicacion MDI | wallesis | OOP | 5 | 03-01-2004 11:17:28 |
|