Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Bildschirmschoner / Computer Sperren Problem (https://www.delphipraxis.net/147243-bildschirmschoner-computer-sperren-problem.html)

SonicTTH 4. Feb 2010 12:31


Bildschirmschoner / Computer Sperren Problem
 
Hallo,

Ich möchte einen bildschirmschoner erstellen der einen countdown anzeigt und nach ablauf dieses countdowns den computer sperrt (also als sicherheitsvorrichtung).

Das funktioniert soweit bereits ganz gut.

Ausserdem möchte ich, wenn sich der benutzer das nächste mal anmeldet, dass dieser dann eine nachricht in form eines fensters mitteilt, dass der computer automatisch gesperrt wurde.

Das bereitet mir ein problem, denn ich habe das bisher so gemacht, das mein programm wenn der countdown abgelaufen ist, noch bevor der computer gesperrt wird, sich selbst erneut öffnet und dabei einen parameter übergibt. Anhand dieses parameters wird dann die nachricht angezeigt ("Automatisch gesperrt"). Nun ist es so, dass das ganze wunderbar funktioniert wenn man in windows den bildschirmschoner einstellungen dialog öffnet, dort den bildschirmschoner festlegt und auf "vorschau" klickt. Alles wunderbar:

Der countdown startet,
wenn er endet wird der computer gesperrt.
Nach dem einloggen wird dann das programm angezeigt mit besagter nachricht.

Wenn der Bildschirmschoner aber natürlich gestartet wird (also von alleine durch das systemevent), funktionierts nicht. Der countdown kommt zwar und der computer wird auch gesperrt, aber die nachricht wird nach dem anmelden nicht angezeigt. Ich vermute daher dass Windows in dem fall des ausloggens durch den "natürlich" gestarteten bildschirmschoner zunächst die gesamte prozessstruktur des Bildschirmschoners tötet.

Stimmt meine vermutung oder gibt es dafür eine andere ursache? Egal was es ist, wie kann ich das umgehen?

Ich versuche bereits mein programm über eine batch datei neu zu starten, was aber aufs selbe hinausläuft...

Mittlerweile bin ich etwas ratlos - also bitte helft mir :)

Danke schonmal :)

Dezipaitor 4. Feb 2010 12:39

Re: Bildschirmschoner / Computer Sperren Problem
 
Wenn man die Option "Kennwort nach Reaktivierung anfordern" aktiviert hat, dann erzeugt Windows einen neuen Desktop. Dort läuft dann der Bildschirmschoner, damit man nicht einfach per Alt+Tab auf andere Fenster umschalten kann, und so z.B. die Kennworteingabe umgehen kann.
Wenn nun der Bildschirmschoner beendet wird, schaltet Windows wieder auf den "default" Desktop um. D.h. die Messagebox in deinem neuen Prozess wird wohl noch auf dem anderen "unsichtbaren" Desktop angezeigt.

SonicTTH 4. Feb 2010 13:27

Re: Bildschirmschoner / Computer Sperren Problem
 
"Anmeldeseite bei Reaktivierung" ist bei mir deaktiviert - trotzdem selbes problem.

Gibts vielleicht ne möglichkeit beim erneuten login ein programm aufzurufen?

rollstuhlfahrer 4. Feb 2010 15:04

Re: Bildschirmschoner / Computer Sperren Problem
 
Ein Bildschirmschoner ist doch nichts anderes als ein ganz normales Programm, welches mit Parametern zeitgesteuert aufgerufen wird. Man kann auch die CMD als Bildschirmschoner haben, wenn man will. Man braucht nur eine Kopie der CMD.exe, kopiert diese in %WinDir% und benennt sie nach CMD.scr um. Dann nur noch als Bildschirmschoner einstellen, fertig.
Soviel zur Theorie. Warum rufst du dein Programm denn erneut auf? Sag dem Programm doch, dass es sich verstecken soll (Hide) und mach schon mal die Meldung bezüglich der automatischen Sperre. Dann sperrst du erst den Bildschirm. Wenn sich dann der User erneut anmeldet, dann sieht er ja die Meldung, weil sie schon vor dem Sperren existierte.

Bernhard

PS: Es könnte noch ein Problem vorhanden sein: Wenn der Bildschirm gesperrt ist, könnten vielleicht die Meldungen wirklich auf dem 2. "unsichtbaren" Bildschirm erscheinen. Ich kenn mich hier aber nicht gut genug aus.

SonicTTH 4. Feb 2010 16:02

Re: Bildschirmschoner / Computer Sperren Problem
 
Erstmal: Computer sperren, nicht bildschirm sperren. Das Computer sperren erzeugt eine tötung der gesamten prozesstruktur des Bildschirmschoners. Daher nix mit "cmd aufrufen und damit dann die meldung 1 und 2 etc". Das ist dann alles tot!

Und mit computer sperren ist gemeint dass man sich auch an einer workstation eine remotedesktopverbindung herstellen kann. Das geht nämlich nicht, wenn irgendein user eingeloggt ist, bzw, sein bildschirmschoner läuft und er wird erst ausgeloggt, wenn dieser wieder beendet wird.

Ich mache das ganze jetzt anders. Ich erstatte dann später bericht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz