Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren? (https://www.delphipraxis.net/163112-shutdown-folder-oder-wie-starte-ich-ein-prog-beim-win-runterfahren.html)

ConnorMcLeod 19. Sep 2011 14:34

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Wie wäre es mit einem Service, das auf SERVICE_CONTROL_PRESHUTDOWN entsprechend reagiert?

Guido Eisenbeis 19. Sep 2011 16:04

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
@CCRDude

Wow, vielen Dank! :-D Sieht schonmal vielversprechend aus. Werd ich diese Woche ausprobieren.

Schon vorab eine kurze Frage: Der Registry-Wert "Asynchronous" ist auf 1 gesetzt. Bedeuted das, dass wie beim "WM_QUERYENDSESSION"-Code das Runterfahren NICHT angehalten wird und alle anderen Programme und Dienste beendet werden?


Zitat:

Zitat von Leanahtan (Beitrag 1125276)
... ein Programm zu schreiben, welches zunächst die gewünschte Aufgabe ... ausführt, und danach die Anweisung zum runterfahren erteilt. Wenn man dann den Rechner ausschalten will, geht man nicht über start->herunterfahren, sondern startet das eigene Programm.


Da sich ja jemand Gedanken über das Problem gemacht hat, ist das sicherlich kein Blödsinn. :) Ich habe diese Antwort sogar erwartet, da sie bei meiner Recherche (vor dem posten in der DP) begegnete. Bei der Recherche habe ich unzählige Lösungs-Vorschläge gefunden, die aber immer den ein und selben Inhalt hatten (besser gesagt, es waren immer die zwei gleichen): Zum einen Group Policies und zum anderen die von dir genannte Umgehung per eigenem "Ausschalt"-Programm.

Wie du schon vermutet hast, erfüllt es leider nicht den Zweck der Lösung, die ich suche. Es soll auf das Runterfahren reagiert werden, egal wie es ausgelöst wird und was es auslöst. So soll es beim Drücken des Buttons am PC ausgeführt werden, genauso wie beim Win-Neustart nach einer Install-Routine. Oder nachdem man vom blöden Win-Update genervt wurde, das man schon siebenundzwölfzig Mal weggeklickt hat, während man youtube-Videos kuckt.

Zitat von Hugo Egon Balder: "Eine wirklich schöne Antwort, ... aber für eine andere Frage."


Zitat:

Zitat von ConnorMcLeod (Beitrag 1125342)
Wie wäre es mit einem Service, das auf SERVICE_CONTROL_PRESHUTDOWN entsprechend reagiert?

Klingt zunächst auch mal interessant. :) Was wäre da denn der Vorteil gegenüber der "WM_QUERYENDSESSION"-Lösung? (Details siehe Posting #2)


Guido.

turboPASCAL 19. Sep 2011 16:54

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

Ich hatte das selbe "Problem" mit der Lautstärke und den Kopfhörern.

Vor ein paar Jahren hatte ich mit 'ne kleine "App" geschrieben die
recht zuverlässig funktioniert, auch wenn es nur per Autostart bzw.
Aufgabenplanung gestartet werden musss.

Gedacht war es für/ab Windows XP, Vista & 7.

Union 19. Sep 2011 16:56

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Kannst Du auch was zu der Lösung sagen, evtl. mit relevanten Sourceauszügen?

jfheins 19. Sep 2011 17:06

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Zitat:

Zitat von turboPASCAL (Beitrag 1125363)
Moin,
Ich hatte das selbe "Problem" mit der Lautstärke und den Kopfhörern.
Vor ein paar Jahren hatte ich mit 'ne kleine "App" geschrieben die
recht zuverlässig funktioniert, auch wenn es nur per Autostart bzw.
Aufgabenplanung gestartet werden musss.
Gedacht war es für/ab Windows XP, Vista & 7.

Wenn ich das hier richtig sehe, geht es ja nicht mehr um eine konkrete lösung der Lautstärkeanpassung, sondern vor allem darum wie man diese korrekt in einem Setup verpacken und installieren kann.
Insofern ist die Lösung mit Hilfe der Aufgabenplanung zur ganz nett aber es Bedarf auch einer Möglichkeit diesen Eintrag in der Aufgabenplanung automatisiert zu erstellen.
ich hoffe ich habe das jetzt so richtig wiedergegeben - zumindest hieß es in Post #1
Zitat:

Das Programm soll möglichst mit einer Installations-Routine installiert werden können, z. B. Doppelklick -> ein paarmal "Weiter" -> und "Fertig".
:angel2:

himitsu 19. Sep 2011 17:15

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Zitat:

noch schnell ein Programm beim Herunterfahren starten
Bei QueryShutdown vielleicht grade noch so möglich,
aber wenn der PC bereits am Runterfahren ist, dann meckert Windows schonmal rum, wenn sich da ein Programm starten will und verhindert dieses dann auch noch.

ConnorMcLeod 19. Sep 2011 20:49

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125353)
Was wäre da denn der Vorteil gegenüber der "WM_QUERYENDSESSION"-Lösung

Dass Windows bzw der SCM wirklich auf das Beenden des Dienstes wartet. Siehe hier.

D.h. Du kannst in Ruhe alles machen, was gemacht werden soll, ohne fürchten zu müssen, dass Windows mittlerweile den SCM killt.

CCRDude 20. Sep 2011 07:23

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125353)
Schon vorab eine kurze Frage: Der Registry-Wert "Asynchronous" ist auf 1 gesetzt. Bedeuted das, dass wie beim "WM_QUERYENDSESSION"-Code das Runterfahren NICHT angehalten wird und alle anderen Programme und Dienste beendet werden?

Oh, da hast Du recht! Das Beispiel habe ich aus Code kopiert/angepasst, den wir hier für einen Logon-Handler verwenden, da war die parallele Bearbeitung (Winlogon startet das dann in eigenem Thread) praktisch - Du müsstest das wohl auf 0 setzen, klar :)

Guido Eisenbeis 21. Sep 2011 04:32

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Hallo Leute,

diesmal sind echt wieder einige interessante Antworten dabei, da "musste" ich mir sogar erst mal einen Kaffee holen. :-D Vielen Dank an alle!

Ich versuche alle zu beantworten und dabei "ähnliche Elemente zu gruppieren". (kleines Wortspiel *grins* )


Zitat:

Zitat von jfheins (Beitrag 1125365)
Wenn ich das hier richtig sehe, geht es ja nicht mehr um eine konkrete lösung der Lautstärkeanpassung, sondern vor allem darum wie man diese korrekt in einem Setup verpacken und installieren kann.
...
ich hoffe ich habe das jetzt so richtig wiedergegeben - zumindest hieß es in Post #1
Zitat:

Das Programm soll möglichst mit einer Installations-Routine installiert werden können, z. B. Doppelklick -> ein paarmal "Weiter" -> und "Fertig".
:angel2:

Das hast du soweit richtig wiedergegeben. Ich hab extra den weitgefassten Begriff "Install-Routine" gewählt, weil mir sogar eine Batch-Datei genügen würde. ... Das ist schonmal 'ne gute Überleitung zum nächsten Posting ->


Zitat:

Zitat von turboPASCAL (Beitrag 1125363)
... Vor ein paar Jahren hatte ich mit 'ne kleine "App" geschrieben die
recht zuverlässig funktioniert, auch wenn es nur per Autostart bzw. Aufgabenplanung gestartet werden musss.


Gute Sache soweit: :-D Es es ist "schon fertig" und "funktioniert" bei einem Test (Querschläger unbekannt). Diese APP braucht also nur in einen Programme-Ordner und eine Verknüpfung in den Autostart-Ordner kopiert zu werden. -> Hier könnte eine simple Batch als Install-Routine dienen.

Weniger gut: :( Closed Source. Somit kann ich also zum einen nicht einschätzen, ob es die bekannten "Querschläger" erzeugt: Runterfahren läuft weiter, andere Progrs und Dienste werden beendet, ... Zum anderen kann ich das erweiterte Ziel nicht umsetzen, was nämlich ein Shutdown-Ordner wäre, mit dem auch andere Aufräum- und Sicherungsarbeiten durchgeführt werden können.

Ich will aber nicht undankbar sein: Hättest du die App am Anfang meines Threads gepostet, hätte ich vielleicht sogar einfach nur das genommen, um den weiteren Aufwand zu vermeiden.

Zitat:

Zitat von Union (Beitrag 1125364)
Kannst Du auch was zu der Lösung sagen, evtl. mit relevanten Sourceauszügen?


Dem kann ich mich nur anschließen. Um die Lösung wirklich auszuschöpfen, müsste ich "reinschauen" können. (siehe oben "Closed Source") Ich würde mich freuen, wenn du uns den Code zeigen würdest. :)


Zitat:

Zitat von CCRDude (Beitrag 1125430)
Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125353)
... "Asynchronous" ist auf 1 gesetzt. Bedeuted das, dass wie beim "WM_QUERYENDSESSION"-Code das Runterfahren NICHT angehalten wird und alle anderen Programme und Dienste beendet werden?

...

Du müsstest das wohl auf 0 setzen, klar :)

Hätte ich auch so gedacht, bin da jetzt nicht aber nicht mehr so sicher, wegen folgender Infos:


Zitat:

Zitat von ConnorMcLeod (Beitrag 1125397)
Zitat:

Zitat von Guido Eisenbeis (Beitrag 1125353)
Was wäre da denn der Vorteil gegenüber der "WM_QUERYENDSESSION"-Lösung

Dass Windows bzw der SCM wirklich auf das Beenden des Dienstes wartet. Siehe hier.

D.h. Du kannst in Ruhe alles machen, was gemacht werden soll, ohne fürchten zu müssen, dass Windows mittlerweile den SCM killt.


Das hört sich genau so an, wie ich es haben will. Die verlinkte Seite bestätigt das auch ungefähr so:

Zitat:

... fordern Sie beim SCM eine Benachrichtigung vor dem Herunterfahren an. Der SCM wartet (möglicherweise auf unbestimmte Zeit) darauf, dass alle Dienste, die so benachrichtigt wurden, heruntergefahren werden, bevor der traditionelle Prozess zum Herunterfahren von Diensten beginnt.

Das entspricht meiner Vorstellung von einer sauberen Möglichkeit, Programme vorm Runterfahren auszuführen.

Das war die gute Nachricht. Jetzt die weniger guten: Den Aufwand kann ich nicht einschätzen, um einen solchen Dienst zu entwickeln, der dann auch noch per Named Pipe mit dem SCM kommuniziert. Der SCM klopft AFAIK alle paar Sekunden bei dem Dienst an, ob jetzt runtergefahren werden kann. (So ähnlich wie Kinder auf der Rückbank: "Sind wir jetzt da? ... Sind wir jetzt da? :mrgreen: ). Dann bin ich mir auch unsicher, ob es bei XP überhaupt funktioniert:

Zitat:

Windows Vista hat eine neue Benachrichtigung vor dem Herunterfahren eingeführt, die Dienste erhalten können.

Kann da jemand was drüber sagen?


Ansonsten schonmal ein Resümee: Es wurde zu einigen Problem-Punkten schon Lösungen vorgeschlagen, mit denen ich soweit zufrieden bin. :thumb:

Somit bleibt noch ein Problem übrig: Gesucht ist eine saubere Möglichkeit, ein Programm VOR dem Abmelden / Runterfahren auszuführen.


Ein guter Kandidat scheint der Vorschlag "Winlogon-DLL" als Dienst zu sein. Ich würde mich über weitere Infos freuen, insbesondere wenn jemand eigene Erfahrungen hat. :-D
Einen mundgerecht aufbereiteten Source-Code würd ich aber auch nehmen. :mrgreen:


Guido.


Edit: Kleine Ergänzung eingefügt.

jfheins 21. Sep 2011 15:35

AW: Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
 
Tut mir leid, wenn sich das jetzt im Kreis dreht, aber in meinen Augen hast du die sauberste Lösung dafür schon längst gefunden: Ein LogOff-Script in den Gruppenrichtlinien hinzufügen. in einer batchdatei lassen sich dann auch mehrere Programme starten und die können dann auch schon nacheinander abgearbeitet werden. Erst wenn das Script fertig ist, wird der PC tatsächlich heruntergefahren. (natürlich keine Garantie ...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Seite 4 von 5   « Erste     234 5      

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