Comme dit dans le titre il premet de fermer la session windows, d'éteindre l'ordinateur ou de le redémarrer dans un temps donné (comme la fonctio sleep sur les tv ou radio réveil) ou à une heure précise.
Le programme
- se met dans le systray (composant piconebarretache :
http://phidels.com/php/index.php3?page=../php/mescompo/piconebarretache.htm)
- peut démarrer en même temps que windows (écriture dans la base de registre)
- peut afficher le décompte durant les 15 dernières secondes en OSD
- peut clignoter durant les 15 dernières secondes
- affiche le décompte dans la barre des taches
- garde en mémoire (lors d'une fermeture) les différentes saisies des utilisateurs (écriture dans un fichier ini)
24 mars 2007 à 19:43
Je l'ai modifié un peu et je vais pouvoir l'intégrer à mon projet.
sinon perso, j'ai toujours utilisé Application.Terminate c'est que j'ai appris en cours pour fermer l'application.
encore merci, by.
Pierre-Emmanuel
19 sept. 2006 à 00:04
Mais bon c'est resté convivial c'est l'essentiel :).
@+
18 sept. 2006 à 18:51
Allez zou je dois faire la page d'index en html : que halt(0) soit avec vous .... Aie qui a lancé une tomate ? Arrr c'est Qoprek : attention toi lol
18 sept. 2006 à 17:06
// Garantir l'accès aux libérations dans les cas des exceptions sur Finalization (par exemple: http://qc.borland.com/wc/qcmain.aspx?da=179)
Procedure DoneApplication;
Begin
With Application Do Begin
If Handle <> 0 then ShowOwnedPopups(Handle, False);
ShowHint := False;
Destroying;
DestroyComponents;
End;
End;
Begin
// Vérifier que l'on ait déja pas une instance de l'application en mémoire
InstanceApplication := TMaMethodeDetectionMultiInstance.Create(Application);
// Si oui alors on sort a ce moment pour n'en laisser qu'une en mémoire
If InstanceApplication.InstanceDejaExistante Then Exit;
// On encadre le fonctionnement global pour contrôler toutes les libérations
Try
// On encadre le fonctionnement global pour intercepter au plus bas niveau les exceptions afin de les tracer si l'objet de trace est déjà/encore disponible
Try
Application.Initialize;
Application.Title := 'SlideShow';
// Création de l'objet de trace ici et non associé à une fiche afin de n'en pas être tributaire
MaTrace:=TMaMethodeDeTrace.CreerAujourdhui(Application,'SlideShow');
// Créations des fiches de l'application
Application.CreateForm(TfrmMain, frmMain);
// ... autres fiches éventuellement
// Exécution principale
Application.Run;
Except
On E : Exception Do Begin
// Objet trace disponible ? alors on peut tracer ...
If Assigned(MaTrace) Then Begin
MaTrace.Ecrire('Exception occured while running application on "%s": "%s"',[E.ClassName,E.Message],0);
End;
End;
End;
Finally
// Libération des fiches et objets annexes
Try
// Pour toutes les fiches n'étant pas la fiche principale
// ....
// If Assigned(FormAutre) Then Begin FormAutre.Free;FormAutre := Nil; End;
// ...
// On libère le journal en dernier car c'est lui qui a la responsabilité des traces
MaTrace.Free;
// Ce dernier Application.ProcessMEssages est absolument nécessaire pour traiter les derniers messages en suspens
// notament les messages du thread de dialogue inter processus si on gère ce genre de mécanisme dans son application
Application.ProcessMessages;
Except
On E : Exception Do Begin
// Objet trace disponible ? alors on peut tracer ...
If Assigned(MaTrace) Then Begin
MaTrace.Ecrire('Exception occured while ending application: "%s"',[E.Message],0);
End;
End;
End;
// Maintenant on libère l'application. Cette libération est faite manuellement
// car il se peut que des exceptions aient laissé l'objet application dans un
// état instable (pas accès a la finalization de forms.pas).
// On encadre donc cette libération par des try... except vides afin d'éviter les
// runtime error 216
Try
DoneApplication;
// Si DoneApplication génère une exception alors on ne tente même pas le free... tant pis !
Application.Free;
Except
// Une première exception a pu laisser Application dans un état instable.
// On ne tient donc pas compte des exceptions qui peuvent apparaître ici
End;
// Remise à nil afin d'éviter le traitement du free dans le source forms.pas
Application := Nil;
End;
End.
Voyons avec un .dpr classique, par exemple ton programme de SlideShow, la différence de sécurisation est quand même visible, même si tu ne gère qu'une fiche, non ? Bon il est vrai que ce genre de blindage est surtout utile sur des gros applicatifs avec plein d'objets crées dans le dpr ...
begin
Application.Initialize;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end.
----->
Procedure DoneApplication;
Begin
With Application Do Begin
If Handle <> 0 then ShowOwnedPopups(Handle, False);
ShowHint := False;
Destroying;
DestroyComponents;
End;
End;
Begin
InstanceApplication := TMaMethodeDetectionMultiInstance.Create(Application);
If InstanceApplication.InstanceDejaExistante Then Exit;
Try
Try
Application.Initialize;
Application.Title := 'SlideShow';
MaTrace := TMaMethodeDeTrace.CreerAujourdhui(Application,'SlideShow');
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
Except
On E : Exception Do
If Assigned(MaTrace) Then MaTrace.Ecrire('Exception durant l''exécution de SlideShow sur "%s": "%s"',[E.ClassName,E.Message],0);
End;
Finally
Try
MaTrace.Free;
DoneApplication;
Application.Free;
Except
End;
Application := Nil;
End;
End.
18 sept. 2006 à 16:19
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.