Salut !
J'ai trouvé un code permettant la mise en veille sur http://codewindev.com.free.fr//fichesource.php?P1=100 mais il était incomplet et se déclenchait pour tous les événements de la gestion de l'alimentation.
Voici donc du code pour gérer la mise en veille depuis par exemple la fenêtre principale de votre projet.
A mettre dans le code d'initialisation de la fenêtre principale du projet :
A mettre par exemple dans une procédure locale à votre fenêtre principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 // --- Gestion de la mise en veille CONSTANTE WM_POWERBROADCAST=0x0218 BROADCAST_QUERY_DENY=0x424D5144 PBT_APMSUSPEND=0x4 FIN iEvenementMiseEnVeille est un entier SI PAS gbBDDLocale ALORS iEvenementMiseEnVeille = Evénement(MiseEnVeille, "*.*", WM_POWERBROADCAST) FIN // --- Fin de gestion de la mise en veille
J'espère que ça pourra aider les gens qui en ont besoin !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 PROCEDURE MiseEnVeille(pEnumMessage, wParam, pLParam) SI wParam = PBT_APMSUSPEND ALORS DélaiAvantFermeture(300) SI OKAnnuler("L'ordinateur va passer en veille.", "Cliquez sur Annuler pour empêcher l'application de se fermer.") = Annuler ALORS // A noter que ce code ne s'exécute jamais : il n'a pas le temps. C'est donc le bouton OK qui est validé (voir le "SINON") DélaiAvantFermeture(0) RENVOYER BROADCAST_QUERY_DENY SINON // Ce code s'exécute apparemment systématiquement DélaiAvantFermeture(0) // Faire ici ce que vous voulez. Moi, par exemple, je force la fermeture de mon programme car il accède à des bases SQL et je sais qu'il va planter au retour de la mise en veille... FinProgramme() RENVOYER Vrai FIN FIN
A+
Fabrice, Toulouse
Partager