Economiseur

- Présentation -

        Je présume que vous savez tous ce qu'est un économiseur d'écran ? Nous allons donc voir ici comment réaliser votre propre économiseur. Il s'agit en réalité d'un simple fichier exe renommé en scr. Bien sûr cela ne suffit pas, mais vous verrez...

- Notre Projet -

        Votre projet doit contenir une fenêtre pour mettre les options de l'économiseur ou, à défaut, votre copyright. Vous vous devez également d'inclure une fenêtre, de préférence sans barre de titre et remplissant tout l'écran, pour afficher vos animations. Le seul probléme est de savoir quand afficher telle ou telle fenêtre. En fait il suffit d'analyser la ligne de commande. En effet, lorsque Windows appelle un économiseur, il lui passe des argument lui indiquant ce qu'il doit faire.

- Le Code -

        Voici le pseudo-code illustrant nos propos:

main()
{
  argument = argument.substring(0, 2);
  if (argument == "/s")
    startAnimation();
  else if (argument == "/c")
    voirOptions();
  else if (argument == "/p")
    // Décharger de la mémoire
    // Ou faire un aperçu
}

        Vous voyez, c'est très simple. On vérifie les deux premiers caractères de la ligne de commande et en fonction de ceux-ci, on effectue une opération spécifique.

- Autre contrainte -

        Normalement, quand un économiseur d'écran se lance, il envoie un message au système, un truc du genre "eh, je suis un économiseur d'écran, et j'ai été lancé", ce qui fait que le timer qui gère le déclenchement de l'économiseur est arrêté. Si ce message n'est pas envoyé, et que par exemple le temps de déclenchement est d'une minute, alors votre programme sera lancé toutes les minutes... Ça m'est déjà arrivé alors que j'étais parti, et à mon retour... oh surprise, dépassement de pile, plus de mémoire, etc... Mais il y a bien plus simple que d'envoyer un message au système quand l'économiseur est lancé (et quand il est quitté): certains langages tels le Visual Basic possèdent une instruction très pratique pour vérifier si le programme a déjà été lancé. Le code de vérification en VB serait alors (je n'ai aucune idée si ça existe en C/C++ ou autres) :

'Vérification: le programme est-il déjà lancé?
If App.PreviousInstance Then End

        Voilà, c'est tout! Une simple ligne de code dans la procédure de chargement (Form_Load ou Sub Main) et qui fait tout le boulot. N'oubliez pas de nous envoyer vos réalisations !