Hallo.
Ok soweit, ich habe zwar kein Form, weil das eine
Konsolenanwengung ist, aber das Prinzip ist klar.Aber wenn
jemand den Prozess des Programs über den Taskmanager beendet,
dann wird die Einstellung auch nicht wieder zurückgesetzt?
Wenn der Prozess gekillt wird, dann hat das ungeahnte Folgen -
da gibt es im selben Prozess keine Möglichkeit noch etwas zu
tun. Deshalb auch die Warnung vom Taskmanager, wenn man das
macht - es kann zu Systeminstabilität führen.
Das ist natürlich klar.
Wie machen das z.B. einige Videoplayer? Wenn da ein Video
läuft, springt der Bildschirmschoner nicht an, obwohl er laut
Windows noch aktiv ist. Kann man sowas auch mit Deplhi
hinbekommen?
Die Win32-Videoplayer, die ich kenne, sind keine
Konsolenanwendungen
OK, die, die ich kenne, auch nicht. Aber vielleicht geht deren Vorgehen ja auch in Konsolenanwendungen.
Wahrscheinlich fangen die meisten den
Windows-Message WM_SYSCOMMAND ab und blockieren sozusagen den
Bildschirmschoner ‚passiv‘. Bevor Windows den
Bildschirmschoner aktiviert, sendet es die Nachricht
WM_SYSCOMMAND mit dem Wert SC_SCREENSAVE im WParam an die
aktuell aktive Anwendung - dann reicht es den Message
abzufangen und message.result auf 0 zu setzen; schon aktiviert
Windows den Bildschirmschoner nicht mehr. Wenn die Anwenung
inaktiv ist, hat dies aber keine Wirkung.
Hm, es wäre natürlich schön, wenn das auch geht, wenn das Programm im Hintergrund läuft.
Vielleicht muss ich doch anders vorgehen. Wofür ich das ganze brauche:
Ich habe mir ein Programm geschrieben, dass zu einem per Parameter bestimmbaren Zeitpunkt den Rechner runterfährt. Als Ersatz für den shutdown-Befehl von Windows, weil der ja nur mit Administratorrechten will. Das Problem ist, dass mein Programm den Rechner nur runterfährt, wenn nicht der Bildschirmschoner aktiv ist.
Ist der Bildschirmschoner aktiv, geht folgender Befehl schief:
LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
Wenn ich also den Bildschirmschoner nicht deaktiviert bekomme, hast du eine Idee, wie ich es hinbekomme, dass ich trotz aktivem Bildschirmschoner runterfahren kann?
Sebastian.