Bonjour à tous!
Je suis en trian de développez un programme API Windows qui traite le message WM_QUERYENDSESSION, lui répond par une réponse -1 pour geler la fermeture de Windows, exécute une commande, puis éteint windows.
Simplement voila: je désire laisser quelques seocondes à l'utilisateur pour stopper l'exécution de la commande. Lorsque mon programme reçoit le message de fin de session, il crée un boite de dialogue non modale (CreateDialog, ne gèle pas la fenêtre mère) pour pouvoir continuer à répondre -1 au message (sinon windows risque de killer mon appliquation... ).
Voila mon problème: je dois attendre 10 secondes avant d'exécuter la commande. Ja'i pensé à Sleep, mais, étonamment, la fenêtre mère se gèle aussi lors de l'utilisation du Sleep dans la boite de dialogue fille.
J'ai pensé à une autre solution qui compare deux temps et losque le délai est dépassé, exécute l'action. Mais ça ne marche toujours pas: la boucle de la fenêtre de dialogue ne s'active que losqu'il y a des messages à traiter dans la queue, et le fait de s'envoyer des message en boucle continuellement pendant les secondes bloque complètement la fenêtre et le proc est à 100%.
Existe-t-il une fonction asynchronome qui simplement exécute une action après n secondes? Une fonction que l'on n'appelle qu'une fois et qui se suffit à soi-même? Une autre solution pour attendre n secondes sans bloquer l'appli ni nécessiter de garder la boucle de la fenêtre continuellement active?
Merci! @++
Partager