AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Shutdown-Folder, oder: Wie starte ich ein Prog beim Win-Runterfahren?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Guido Eisenbeis · begonnen am 16. Sep 2011 · letzter Beitrag vom 21. Sep 2011
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#31

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

  Alt 19. Sep 2011, 14:34
Wie wäre es mit einem Service, das auf SERVICE_CONTROL_PRESHUTDOWN entsprechend reagiert?
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#32

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

  Alt 19. Sep 2011, 16:04
@CCRDude

Wow, vielen Dank! 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?


... 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."


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.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#33

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

  Alt 19. Sep 2011, 16:54
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.
Angehängte Dateien
Dateityp: zip SndVolOnShutdown.exe.zip (14,3 KB, 9x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#34

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

  Alt 19. Sep 2011, 16:56
Kannst Du auch was zu der Lösung sagen, evtl. mit relevanten Sourceauszügen?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#35

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

  Alt 19. Sep 2011, 17:06
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".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#36

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

  Alt 19. Sep 2011, 17:15
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#37

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

  Alt 19. Sep 2011, 20:49
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.
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#38

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

  Alt 20. Sep 2011, 07:23
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
  Mit Zitat antworten Zitat
Guido Eisenbeis

Registriert seit: 9. Apr 2006
389 Beiträge
 
Delphi 10.3 Rio
 
#39

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

  Alt 21. Sep 2011, 04:32
Hallo Leute,

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

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


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".
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 ->


... 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: 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.

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.


... "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:


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? ). 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.

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.
Einen mundgerecht aufbereiteten Source-Code würd ich aber auch nehmen.


Guido.


Edit: Kleine Ergänzung eingefügt.

Geändert von Guido Eisenbeis (21. Sep 2011 um 04:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#40

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

  Alt 21. Sep 2011, 15:35
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 ...)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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