Fermer une application dans la routine OnCreate
Bonjour.
Il est impossible de fermer un programme (comprenant une seule fiche) dans la routine "OnCreate" par "[NomDeLaFiche].Close;", ni sous W2000, ni sous XP. L'instruction "[NomDeLaFiche].Release;" fonctionne de manière "sale", c'est-à-dire qu'après exécution il est impossible de recompiler l'application : l'exécutable reste "ouvert". Enfin l'instruction "[NomDeLaFiche].Free;" plante méchamment ...
La seule méthode qui SEMBLE fonctionner proprement est "Application.Terminate ;" !
Je m'explique : je dois initialiser un périphérique USB et en cas d'absence de celui-ci quitter le programme sans autre forme de procès.
Avez-vous aussi déjà remarqué ce problème ?
Je "commence" à comprendre ...
Voilà, j'ouvre mon périphérique USB dans ma routine en mode "OnCreate", en cas d'échec je termine par "ApplicationTerminate" ; cela fonctionne sauf ... que mon programme est passé dans le second onglet, celui des processus, dans le gestionnaire des tâches. Et donc impossible de recompiler pour modifications avant d'avoir arrêté ce processus, qui au passage doit "bouffer" des ressources pour rien ! Comment faire pour terminer "proprement" ? PostMessage(Self.Handle, 16, 0, 0) ne marche pas non plus. A moins que tout ceci ne soit lié à la dll de contrôle de l'interface USB qui aurait "des problèmes" ?
Une autre curiosité est que des "OnActivate" et "OnDeactivate" définis via les événements de la fiche principale ... sont ignorés, maintenant que ma routine d'initialisation est en mode "onCreate" : il faut que je mette "Application.On(de)activate:= ..." dans ladite routine d'initialisation. Bizarre ... Auparavant, quand ma routine d'initialisation était définie dans l'événement "OnActivate", cela marchait et je redéfinissais l'événement OnActivate dans la routine. OnDeactivate n'a jamais marché via la gestion d'événements de la fiche principale !
J'attends vos suggestions !
Et par ailleurs tous les problèmes semblent avoir disparu ...
sans l'usage du composabt HID, aussi bien la perte des pointeurs que les exe restés ouvert ou le plantage à la fermeture de MediaPlayer, à condition d'ajouter "Sender : TObject" dans la liste des paramètres de TOUTES les routines, y compris certaines non-événementielles où il ne sert à rien a priori.
Par contre les problèmes du "on(de)activate" et du Main.Close dans la routine "OnCreate" demeurent, il faut alors utiliser Halt(0) (qui apparemment ferme aussi sans laisser de traces).