2010-12-02 32 views
0

Je veux écrire un programme simple qui ne fait rien mais ne se termine pas facilement lorsqu'on lui demande. Je veux voir la boîte de dialogue Windows qui dit, "ce programme n'est pas réactif, voulez-vous attendre pour le laisser finir ce qu'il fait, ou le terminer maintenant?". Une fois que l'utilisateur a choisi de "terminer maintenant", il devrait, bien sûr, quitter.un programme ne répond pas, ne se termine pas gracieusement lorsqu'on lui demande de se terminer, pour tester

La raison pour laquelle je veux ceci est pour un environnement de test. Je veux tester un scénario dans lequel l'utilisateur tente de se déconnecter, mais le système ne les déconnecte pas tout de suite, à cause d'un programme qui ne répond pas.

J'ai essayé de répondre à WM_DESTROY en appelant Sleep(), mais cela ne semble pas le faire. Le programme se termine immédiatement lorsqu'il est tué à partir du Gestionnaire des tâches. Encore une fois, je n'essaie pas d'écrire quelque chose de vraiment "inutilisable", juste un simple programme qui fait apparaître cette boîte de dialogue demandant si l'utilisateur veut attendre la fin du programme.

Merci beaucoup pour votre aide.

+1

Que voulez-vous dire par « tué lors du Gestionnaire des tâches »? Quels éléments de menu ou boutons appuyez-vous? Modifiez votre question pour inclure cette information. – wj32

Répondre

0

Vous pouvez essayer de modifier votre boucle de message principal. Utilisez PeekMessage (...) avec NO_REMOVE et ignorer les messages WM_QUIT

EDIT: Supprimer tous les messages (sauf WM_QUIT) avant de le traiter (GetMessage(&msg ,msg.hWnd ,msg.message ,msg.message))

+0

Qu'est-ce que 'PM_NOREMOVE' a à voir avec cela? Pourquoi voudriez-vous laisser le message d'abandon dans la file d'attente, si votre intention est de l'ignorer? Vous finirez par le traiter encore et encore. –

+0

@Ben Voigt: Evitez de terminer la boucle de messages! –