2010-12-02 3 views
0

Ich möchte ein einfaches Programm schreiben, das nichts tut, aber nicht leicht zu beenden, wenn gefragt wird. Ich möchte das Windows-Dialogfeld sehen, das besagt: "Dieses Programm reagiert nicht, möchten Sie warten, bis es beendet ist, was es tut, oder es jetzt beenden?". Nachdem der Benutzer "Jetzt beenden" ausgewählt hat, sollte er natürlich beendet werden.ein nicht reagierendes Programm, endet nicht anmutig, wenn aufgefordert, zu beenden, zum Testen

Der Grund, ich möchte dies für eine Testumgebung. Ich möchte ein Szenario testen, in dem der Benutzer versucht, sich abzumelden, aber das System meldet sie aufgrund eines nicht reagierenden Programms nicht sofort ab.

Ich versuchte, WM_DESTROY durch Aufrufen von Sleep() zu beantworten, aber das scheint es nicht zu tun. Das Programm wird immer noch sofort beendet, wenn es vom Task-Manager beendet wird. Ich versuche auch nicht, etwas wirklich "unkillable" zu schreiben, nur ein einfaches Programm, das dieses Dialogfeld aufruft und fragt, ob der Benutzer warten möchte, bis das Programm beendet ist.

Vielen Dank für jede Hilfe.

+1

Was meinen Sie mit "wenn sie von den Task-Manager getötet?" Welche Menüpunkte oder Schaltflächen drückst du? Bearbeiten Sie Ihre Frage, um diese Informationen hinzuzufügen. – wj32

Antwort

0

Sie können versuchen, Ihre Hauptnachrichtenschleife zu ändern. WM_QUIT Nachrichten

EDIT PeekMessage (...) mit NO_REMOVE und ignorieren: jede Nachricht entfernen (außer WM_QUIT) vor der Verarbeitung es (GetMessage(&msg ,msg.hWnd ,msg.message ,msg.message))

+0

Was hat 'PM_NOREMOVE' damit zu tun? Warum möchten Sie die Quit-Nachricht in der Warteschlange belassen, wenn Sie sie ignorieren möchten? Sie werden es am Ende immer wieder verarbeiten. –

+0

@Ben Voigt: Vermeiden Sie das Beenden der Nachrichtenschleife! –

Verwandte Themen