[VB] Bildschirmsperre / Bildschirmschoner

Hallo Leute!

Vorzugsweise unter MS Visual Basic (alternativ auch MS Visual C++) möchte ich ein kleines Tool programmieren, welches - ähnlich wie ein Bildschirmschoner - einen Windows-PC mit einem Paßwort absichert.
Kann mir jemand einen Tip geben, wie ich den kompletten Bildschirm ausblenden bzw. mit einer Grafik belegen kann, sodaß keine Desktop-Elemente (Startleiste, Office Shortcut-Leiste, etc.)mehr zu sehen sind.
Wie blockiere ich die Systemtasten (Win, Alt+Tab, Strg-Alt-Entf, etc.)?

CU
Markus

Hi Markus,
hier eine VB6-Antwort:

  • man nehme ein Form mit…

  • BorderStyle = 3-Fixed Dialog

  • Caption = „“

  • WindowState = vbMaximized
    … das verdeckt den ganzen Bildschirm (inkl. Taskleiste usw.)

  • dann brauchst Du noch einen Timer

  • Intverval = 100 (oder auch kürzer)
    …dort rufst Du dann die API-Funktionen

    Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
    Call SetForegroundWindow(Me.hwnd)

auf.

Der PC ist damit NICHT gesperrt, ein arbeiten oder umschalten auf andere Programme ist damit aber auch nicht möglich!!
Der Rest ist dann leicht einzubauen.

greets from MichL (Vienna)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

[VB] Alt+F4, Strg+Alt+Entf unterbinden

Hi Markus,
hier eine VB6-Antwort:

[…]

Der PC ist damit NICHT gesperrt, ein
arbeiten oder umschalten auf andere
Programme ist damit aber auch nicht
möglich!!
Der Rest ist dann leicht einzubauen.

Hallo Michael!

Danke für den Tip!

Wie steht es aber mit Alt+F4 und Strg+Alt+Entf?
Auch hierüber darf das Programm nicht beendet werden können.

CU
Markus

Wie steht es aber mit Alt+F4 und
Strg+Alt+Entf?
Auch hierüber darf das Programm nicht
beendet werden können.

Das habe ich irgendwann einmal im Internet gefunden (obs funktioniert, weiss ich nicht - denke schon - kannst mir ja mal bescheid geben)
greets from MichL (Vienna)

… ja, ich weiß, eigentlich sollte der User bestimmen dürfen, was auf seinem Computer passiert und was nicht, aber verschiedentlich gibt es Gründe, davon abzuweichen - insbesondere dann, wenn von einer zentralen Stelle aus Sicherheits- oder auch funktionellen Gründen Beschränkungen vorgegeben werden können oder müssen.

Nehmen wir beispielsweise an, ein VB-Programm blockiert „in geeigneter Weise“ den Computer solange, bis von dieser zentralen Stelle die Freigabe erteilt wird. Dann ist es ein leichtes, dieses blockierende Programm mit dem Taskmanager zu terminieren und damit die Blockierung aufzuheben. Zwar kann man in der Form_QueryUnload-Prozedur bei UnloadMode = vbAppTaskManager (Taskmanager am Werk) das ganze im ersten Anlauf mit Cancel = True abblocken, doch spätestens der Klick auf den „Beenden“-Butten im Dialogfenster „Diese Anwendung reagiert nicht …“ macht unserem Programm unmißverständlich den Garaus.

Dagegen aber können wir uns schützen, indem wir uns gar nicht erst gegen das Schließen wehren (und damit die Aufmerksamkeit des Benutzers wecken), sondern vor dem Beenden des Programms durch den Taskmanager einfach eine neue Instanz unseres Programms starten:

Private Sub Form\_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim Pfad As String
If Not IDEMode() And UnloadMode = vbAppTaskManager Then '# vbAppTaskManager = 3
 Pfad = App.Path
 If Right$(Pfad, 1) "\" Then Pfad = Pfad & "\"
 On Error Resume Next
 Call Shell(Pfad & App.EXEName & ".exe") '# compilierte Anwendung neu starten
End If
End Sub


Private Function IDEMode() As Boolean
'Gibt zurück, ob die Anwendung in der Entwicklungsumgebung läuft
On Error Resume Next
Err.Clear
Debug.Print 1 / 0 ' Wird in einer EXE nicht ausgeführt
IDEMode = Err.Number 0
End Function

Und der (unbefugte) Benutzer wundert sich, weshalb trotz erfolgreicher Tätigkeit des Taskmanagers das Programm immer noch lebt (und weiterhin blockiert) …

Das ganze läßt sich natürlich noch verfeinern, aber hier soll es nur um den Grundgedanken als Anregung für weitere Überlegungen gehen. Gehen Sie mit dieser Funktionalität äußerst bedächtig um!

Wie steht es aber mit Alt+F4 und
Strg+Alt+Entf?
Auch hierüber darf das Programm nicht
beendet werden können.

Das habe ich irgendwann einmal im
Internet gefunden (obs funktioniert,
weiss ich nicht - denke schon - kannst
mir ja mal bescheid geben)

Hallo MichL!

Das hört sich schon mal gut an. Werde ich mal ausprobieren.
Allerdings frage ich mich, ob es nicht auch eine saubere Methode gibt, den Bildschirm zu sperren. Die Programme, welche ich kenne, erfüllen zwar nicht meine kompletten Anforderungen, blockieren die Nutzung des Rechners aber sehr wirksam und nach außen auch „sauber“. Der Rechner reagiert insbes. überhaupt nicht auf Strg+Alt+Entf. Es erscheint nicht einmal der Task Manager.

CU
Markus