Extinction et redemarrage de votre moniteur à une heure précise

Soyez le premier à donner votre avis sur cette source.

Vue 9 299 fois - Téléchargée 664 fois

Description

J'ai été amené à effectuer dans le cadre d'un stage une application permettant l?extinction d?un moniteur à une heure précise, puis son redémarrage.
Ex :
Il est 12:00:00, je décide que mon moniteur doit s?éteindre à 18:00:00 et devra se rallumer le lendemain à 8:00:00.
C?est mon premier code depuis 3 ans, donc il est forcement perfectible.
Ecrit en C avec Dev-C++ 4.9.9.2 et fonctionne parfaitement.
Ps. : C?est un programme économe.

Source / Exemple :


#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> 

//Extinction et redemarrage d'un moniteur aux heures définit.
//Pour plus d'information sur ce code : kindlyss@hotmail.com

int main(int argc, char *argv[])
{
 long rep; //Reponse boucle operateur
 long h1,m1,s1;
 long h2,m2,s2;
 long h3,m3,s3;
 long somme1,somme2,somme3;
 long hte,mte,ste; 
 long htr,mtr,str;
 long total,total1;
 long ext,red; //Variable de du temps avant l'extinction et avant le redemarrage
 
 	do/*boucle opérateur*/

     {
 
// DEB PROGRAMME------------------------------------------------------------------------
   printf(" --------------------------------------------");
   printf("\n|           Logiciel Moniteur : OFF/ON       |");
   printf("\n --------------------------------------------");
 
 
 h1=0,m1=0,s1=0;
 
 //Heure actuel 
      printf("\n\nQuel heure est-il ? [Format HH/MM/SS] : ");
      scanf("%ld/%ld/%ld",&h1,&m1,&s1);
      
      somme1=3600*h1;
      somme1=somme1+(60*m1);
      somme1=somme1+s1;
      
      printf("\nIl est donc %ldh %ldm et %lds",h1,m1,s1);
      
 h2=0,m2=0,s2;            
 //heure d'extinction des moniteurs
      printf("\n\nA quel heure voulez-vous eteindre les moniteurs ? [Format HH/MM/SS] : ");
      scanf("%ld/%ld/%ld",&h2,&m2,&s2);
        
      somme2=3600*h2;
      somme2=somme2+(60*m2);
      somme2=somme2+s2;
      
      
      printf("\nVous voulez donc eteindre les moniteurs a %ldh %ldm et %lds",h2,m2,s2);

 h3=0,m3=0,s3;
 //heure de redemarrage des moniteurs
      printf("\n\nA quel heure voulez-vous redemarrer les moniteurs ? [Format HH/MM/SS] : ");
      scanf("%ld/%ld/%ld",&h3,&m3,&s3);
      
      somme3=3600*h3;
      somme3=somme3+(60*m3);
      somme3=somme3+s3;
      
      printf("\nVous voulez donc redemarrer les moniteurs a %ldh %ldm et %lds",h3,m3,s3);
      Sleep(2000);
 
 
 //temps avant extinction des moniteurs
 total=0;
 total=somme1-somme2;

		if (total < 0)

			total = total * (-1);
			
        ext=total*1000;
        
/*heure*/ hte=0;
		while(total>=3600)
		 {
		  total=total-3600;
            hte=hte+1;
		 }
   
/*minutes*/ mte=0;
		while (total>=60)
		 {
		  total=total-60;
            mte=mte+1;
		 }
          
/*secondes*/ ste=total;

//temps avant redemarrage des moniteurs
 total1=0;
 total1=somme2-somme3;

		if (total1 < 0)

			total1 = total1 * (-1);

        red=total1*1000;

/*heure*/ htr=0;
		while(total1>=3600)
		 {
		  total1=total1-3600;
            htr=htr+1;
		 }
   
/*minutes*/ mtr=0;
		while (total1>=60)
		 {
		  total1=total1-60;
            mtr=mtr+1;
		 }
          
/*secondes*/ str=total1;

		/*affichage*/
		
		printf("\n\n------------------------------------------------");
		printf("\n------------------------------------------------");
        printf("\n\nL'extinction des moniteurs sera effectif dans: %ldh %ldmin %ldsec",hte,mte,ste);
        printf("\n\nLes ecrans redemarreront %ldh %ldmin %ldsec apres l'extinction",htr,mtr,str);
        printf("\n\n------------------------------------------------");
		printf("\n------------------------------------------------");
		
		
		
/*------- Extinction ----------*/
 Sleep(ext); //Temps avant extinction
 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2); //donne l'instrution pour éteindre le moniteur

/*------- Redemarrage ----------*/
 Sleep(red); //temp avant redemarrage
 SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1); //donne l'instrution pour rallumer le moniteur 
 
 
 // FIN PROGRAMME------------------------------------------------------------------------
 	    
    	do /*boucle opérateur reponse*/

		{

		 printf("\n\n\nVoulez-vous recommencer ? OUI (o) ou NON (n):");

		 rep=getche();

		}while (( rep!='o') && ( rep!='n' ));

	}while (rep!='n'); /*boucle opérateur sortie*/

 
}

Conclusion :


Le site CodeS-Sources m?ayant aidé lors de ma reprise du C, j?ai décidé de le publier. Qui sait, il pourrait peut être servir à quelqu?un.
+

C'est une GreenWare ;)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
13
Date d'inscription
lundi 23 décembre 2002
Statut
Membre
Dernière intervention
22 février 2011

Bjr,
merci pour votre liens,je suis en stage et puis je dois faire un programm qui met le pc en veille et puis redémarrer le pc et puis calculé lŽenergie grace a un appareil relier en port com au pc.est ce que vous pouvez mŽaidé?
merci
Messages postés
2
Date d'inscription
mercredi 12 mai 2004
Statut
Membre
Dernière intervention
11 juillet 2007

La fonction réalisée est en effet intéresssante. La façon d'y arriver n'est pas forcemment la meilleure.

1. Pourquoi ne pas récupérer l'heure de l'ordinateur, plutot que de le demander ?

2. La fonction sleep est 'blocante' pour le thread. Il serait sympa de prévoir un moyen de sortie normale du programme pendant son fonctionnement.

C'est tout pour le moment.
Messages postés
18
Date d'inscription
vendredi 16 mars 2007
Statut
Membre
Dernière intervention
2 mars 2008

il est super ce code .
je suis qu cyber et sa ma ete utile
je te remercie grave
Messages postés
2
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
4 juin 2007

Mettez 1 comme note si vous voulez, mais jusfiez vos notes par un commentaire, merci.

Pareil pour le 10 ;)

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.