Seite 1 von 1
Fenster-Beenden verhindern
Verfasst: Sonntag 27. Juni 2010, 10:14
von OpenCV
Hallo Community!
Ich hätte eine Frage an euch: Wie kann man bei einer Tkinter-GUI das kleine "x" oben in der Titelleiste deaktivieren, so dass man das Programm nicht beenden kann?
MFG
OpenCV
Re: Fenster-Beenden verhindern
Verfasst: Sonntag 27. Juni 2010, 13:08
von numerix
Code: Alles auswählen
import Tkinter as tk
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW",0)
tk.Button(text="Beenden",command=root.quit).pack()
root.mainloop()
Re: Fenster-Beenden verhindern
Verfasst: Mittwoch 30. Juni 2010, 16:45
von OpenCV
Vielen Dank für die Antwort!
Ich hätte noch 2 kleine Fragen:
1) Wie kann ich auch das Minimieren verhindern?
2) Wie kann ich es schaffen, dass ich den Prozess über den Task-Manager z.B. nicht killen kann?
MFG
Re: Fenster-Beenden verhindern
Verfasst: Mittwoch 30. Juni 2010, 16:56
von Dav1d
zu 1) keine Ahnung
zu 2) Garnicht, du könntest aber einen 2 Prozess starten, der den 1. überwacht, falls der 1. beendet wird, kann der 2. den 1 wieder starten
Re: Fenster-Beenden verhindern
Verfasst: Mittwoch 30. Juni 2010, 17:01
von OpenCV
OK oder ich hab eine bessere Idee:
Wie kann ich während das Programm läuft, alle anderen Prozesse "blockieren", also verhindern, dass man auf sie zugreifen kann?
Also ich will, dass nur dieses Programm auf dem OS läuft bis zur Terminierung und alle anderen nicht aufrufbar sind für den Benutzer...
Re: Fenster-Beenden verhindern
Verfasst: Mittwoch 30. Juni 2010, 19:31
von problembär
OpenCV hat geschrieben:bis zur Terminierung
Kommt auf's OS an.
Re: Fenster-Beenden verhindern
Verfasst: Freitag 2. Juli 2010, 08:42
von frabron
Das ist aber eher keine Python-Frage mehr, sondern Benutzeradministration. Wie man unpriviligierte Benutzer anlegt, ist natürlich abhängig vom System selber. Da du vom Taskmanager redest, wirst du wohl Windows einsetzen. Unter XP Home wird da wenig gehen, da dort die Bordmittel fehlen. Ab Vista gibt es ja die UAC, vllt. geht ja damit was, ansonsten mal das Technet durchforsten, da findet sich mit Sicherheit was zur Benutzerverwaltung und -rechten.
Re: Fenster-Beenden verhindern
Verfasst: Freitag 2. Juli 2010, 18:15
von OpenCV
Ich habe da eine bessere Idee zur Umsetzung meines Problems gefunden:
Das Tk-Fenster soll sich einfach nach 10 Sekunden zerstören.
Wie geht das? Gibt es bei root.mainloop() vllt. ein time-Parameter, für wielange es laufen soll?
Re: Fenster-Beenden verhindern
Verfasst: Freitag 2. Juli 2010, 19:31
von problembär
Re: Fenster-Beenden verhindern
Verfasst: Dienstag 26. Januar 2021, 22:12
von Tomary
Ich meine mit einer .vbs datei
die mit subprocess ausgeführt wird
Befehl:
Datei:
Code: Alles auswählen
On Error Resume Next
Set objWshShl = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!//./root/cimv2")
Set colMonitoredProcesses = objWMIService.ExecNotificationQuery("select * from __instancecreationevent " & " within 1 where TargetInstance isa 'Win32_Process'")
Do
Set objLatestProcess = colMonitoredProcesses.NextEvent
If LCase(objLatestProcess.TargetInstance.Name) = "taskmgr.exe" Then
objLatestProcess.TargetInstance.Terminate
' fake popup message
objWshShl.Popup "Task Manager has been disabled by your administrator.", 3, "Task Manager", 16
End If
Loop
Re: Fenster-Beenden verhindern
Verfasst: Dienstag 26. Januar 2021, 22:21
von __deets__
Das ändert die Antwort nicht. Auch eine subprocess kannst du im after killen. Aber du kannst den VB-Code auch durch die Python win32 API ersetzen. Und dir so den zweiten Prozess ganz sparen.