VisualBasic Alt+F4verhindern aber dennoch me.close() benutzen können

T

tx_g

Gast
Hallo
ich habe eine kleine Anwendung geschrieben die Verhindern soll, dass jemand meinen Rechner benutzt. Der PC ist aber in dem Fall nicht einfach gesperrt, da die Anwendungen die im Hintergrund laufen sollen, sonst nicht richtig funktionieren.

Somit schiebt sich das Programm was ich erstellt habe immer in den Vordergrund und verhindert das irgendjemand etwas machen kann. Beendet soll es mit einer Passworteingabe werden.

Ich habe allerdings das Problem, dass wenn ich durch:
Code:
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If (e.CloseReason = CloseReason.UserClosing) Then
            e.Cancel = True
        End If
    End Sub
Alt+F4 Verhindere, dass ich die Anwendung nun auch nicht mehr über
Code:
Me.Close()
beenden kann.

Kennt ihr dort eine Lösung?
 
Bei C# würd ichs wohl so in der Art machen:
Damit gehen Eingaben in TextBoxen immer noch, nur das Alt+F4 wird "abgefangen".
Geht sicher viel besser als so!

Code:
//Tastendruck auf der Tastatur
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
   KeysConverter kc = new KeysConverter();
   string keyChar = kc.ConvertToString(keyData);

   if (keyChar == "Alt+F4")
      return true;

   return false;
 }
 
Ok, wo soll das in dem Code hin muss ich noch fragen :), oder einfach an den Anfang.
 
Kommt auf die gleiche Ebene wie die "Main", aufrufen musst du die garnicht weil hier eine Standard-Methode overrided wird.
Dass die bei VB anders heißt und anders funktioniert ist natürlich möglich...

War nur ein Anstoß dass man anstatt dem Closing-Event auch die Tastendrücke blocken kann.

P.S.: Was hindert den Benutzer Strg+Alt+Entf zu machen und das Programm/den Prozess über den Taskmanager zu beenden? Das ganze ist ein Fass ohne Boden wenn du wirklich sicher gehen willst.
 
Zuletzt bearbeitet:
Theobald93 schrieb:
P.S.: Was hindert den Benutzer Strg+Alt+Entf zu machen und das Programm/den Prozess über den Taskmanager zu beenden? Das ganze ist ein Fass ohne Boden wenn du wirklich sicher gehen willst.
Das frage ich mich auch. Wäre es nicht viel einfacher den Bildschirmschoner unter Windows mit einem Häkchen bei Anmeldeseite bei Reaktivierung zu aktivieren, wenn man noch zu wenig Erfahrung im Programmieren hat?
 
Die Frage ist berechtigt was ihn daran hindert.
Wie ich schon meinte, das Programm ist IMMER im Vordergrund durch die Einstellungen TopMost true, WindowState Maximized.

Du kannst somit weder aus dem Programm herraustaben noch es per Taskmanager beenden, noch es Minimieren. Es geht halt leider noch per Alt+F4

Habe es jetzt nochmal mit
Code:
Private Sub frmMyform_FormClosing(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    Dim Cancel As Boolean = eventArgs.Cancel
    Dim UnloadMode As System.Windows.Forms.CloseReason = eventArgs.CloseReason
    If UnloadMode = CloseReason.UserClosing Then
	  'Prevent it closing
      Cancel = True
    End If
	
	'Allow it to close if it wasn't the user's action
    eventArgs.Cancel = Cancel
End Sub
ausprobiert, aber auch hier lässt sich me.close() nicht mehr nutzen.

Der Vorschlag von Theobald funktioniert leider nicht.
 
Zuletzt bearbeitet von einem Moderator:
Zuletzt bearbeitet:
Das hilft mir leider nicht wirklich weiter.

Das eigentliche Problem ist ja nur, wie ich die Anwendung beendet bekomme. Die beidem Codes die ich da rausgesucht habe, funktionieren, allerdings kann ich die Anwendung nun überhaupt nicht mehr beenden.

Hätte jetzt nur noch die Idee gehabt das Programm sich per TaskKill zu beenden, was auch nicht so ganz funktioniert oder eine zweite Anwendung einzusetzen, welche die erste überwacht und sie wieder neu startet wenn sie beendet wurde.
 
Warum nicht einfach Win + L benutzen??

Sperrt den PC und entsperrt ihn mit Benutzerpasswort ohne Hintergrundprogramme zu beenden?

Selbst wenn dein Programm das Beenden verhindern kann, lässt ein eingeleiteter Shutdown von Windows das Programm beenden und danach kann man immer noch den Shutdown von Windows anhalten.
 
Zuletzt bearbeitet:
Harzerkas schrieb:
Selbst wenn dein Programm das Beenden verhindern kann, lässt ein eingeleiteter Shutdown von Windows das Programm beenden und danach kann man immer noch den Shutdown von Windows anhalten.
Ich muss mal Fragen wie das geht, ich meine das Zeitfenster zum Abbrechen ist etwas sehr kurz, aber ich bin mir nicht sicher wie du das meinst.
 
Nein das Fenster ist nicht zu kurz um das zu machen. So haben wir in der Schule immer unsere PCs entsperrt, wenn der Lehrer sie gesperrt hatte.
 
Zurück
Oben