Wie Sie alle auffälligen Messagebox-Rekursionen manuell abbrechen, wenn sie sehr schnell und sehr oft in Windows geöffnet werden

592
DMaster

Erstens frage ich nicht nach Programmierlösungen, ich veröffentliche diesen Code nur, um zu zeigen, wie dieses Programm funktioniert.

Ich habe dieses Programm unten (in Virtual Box) ausprobiert:

#include <iostream> #include <string.h> #include <windows.h>  using namespace std;  int main(int argc, char **argv){  //program will create a command string that will be executed by the system console to call itself in another process (create another process): cmd = start program_name.exe string cmd = string("start ") + string(*argv);  //execute cmd: a temporary console will be opened, then execute cmd, finally the console will be closed system(cmd.c_str());  //display a message box (In fact, display many message boxes) which annoying user MessageBowW(0, L"Message box content", L"Message box title", MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST);  //if the user pressed OK button in a message box, the message box will display again (by recursion) return main(argc, argv); } 

Die kompilierte ausführbare Datei hier

Durch das wiederholte Aufrufen dieses Programms werden viele äußerst störende Messageboxen geöffnet und das System verlangsamt. Dieses Programm verhindert auch, dass der Benutzer Manipulationen vornimmt.

Ich kann nichts Besseres tun, als mein System neu zu starten.

Meine Frage ist, wenn ich versehentlich dieses Programm öffne (direkt durch Doppelklick öffnen), wie kann ich alle Prozesse stoppen, ohne Windows neu zu starten? Irgendeine Idee?

0
Der Task-Manager funktioniert nicht, um das Programm zu beenden. In diesem Fall müssen Sie sich möglicherweise abmelden. Karan vor 9 Jahren 0
Beim Abmelden können jedoch nicht gespeicherte Daten verloren gehen DMaster vor 9 Jahren 0
Ja, aber wenn Sie einen aggressiven Prozess haben, der durch das Öffnen mehrerer Instanzen alle Ressourcen beansprucht, können Sie bald nichts tun, da das System fast nicht mehr reagiert. Wenn möglich, können Sie Apps schnell schließen und mit Ja antworten, wenn sie zum Speichern aufgefordert werden, und dann abmelden. Oder versuchen Sie und öffnen Sie den Task-Manager und beenden Sie den Prozess irgendwie, aber das kann schwierig werden, wenn immer neue Fenster erscheinen, die den Fokus überlappen oder stehlen. Karan vor 9 Jahren 0
Es scheint, dass Windows nicht genügend Tools für die sichere Kontrolle zur Verfügung stellt, manchmal muss der Benutzer aufgeben. Wo ist ein hilfreiches Werkzeug, das mir hilft, diesen Unfall rückgängig zu machen? DMaster vor 9 Jahren 0
Was Sie beschrieben haben, ist im Grunde eine Gabelbombe, und selbst unter Linux können Ressourcen schnell erschöpft werden, wenn `ulimit -u` nicht verwendet wird. Für den Rekord hatte ich Firefox ausgeführt und Word und Notepad mit nicht gespeicherten Dateien geöffnet, und ich konnte mich abmelden. Windows zeigte mir dann, dass es alle Instanzen Ihres Programms tötete, und als alle weg waren, brach ich die Abmeldung schnell ab und konnte meine Arbeit ohne Probleme fortsetzen. Karan vor 9 Jahren 0
Ich wusste das vorher nicht, danke! DMaster vor 9 Jahren 0

0 Antworten auf die Frage