AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Herausfinden ob Neustart, Herunterfahren oder Ruhemodus
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

Ein Thema von TheMiller · begonnen am 30. Apr 2006 · letzter Beitrag vom 3. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 30. Apr 2006, 08:37
Hallo,

habe schon dort gesucht und mich rund um WM_QueryEndSession und ähnlichem schlau gemacht. Mein Ziel ist es abzufragen, ob der Benutzer Windows neustartet, herunterfährt oder in den Ruhemodus gehen will. Hab schon ein bissl gestöbert, aber hab noch nix passendes gefunden.

Könnt ihr mir Tipps geben? Danke im Voraus


Nach 3 Minuten:

Ah... ich sehe gerade:

Zitat von http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shutdown/base/wm_endsession.asp:
0 = The system is shutting down or restarting (it is not possible to determine which event is occurring).
Gibt es gar keine Möglichkeit, den Status abzufangen?

[edit=alcaeus]Beitraege zusammengefuehrt. Den Edit-Button solltest du kennen Mfg, alcaeus[/edit]
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 30. Apr 2006, 08:45
Warum sollte es eine Möglichkeit geben zwischen herunterfahren und Neustarten zu unterscheiden? In beiden Fällen wird der PC heruntergefahren. Beim Neustart kommt zusätzlich noch das Rebooten hinzu. Aber Runtergefahren wird in beidne Fällen komplett.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 30. Apr 2006, 09:03
Es hat schon einen Grund, warum ich das abfangen möchte. Ich habe ein Programm, das wird ausgeführt, wenn Windows (wie auch immer) beendet wird. (Dies hat auch seinen (vernünftigen) Grund) Wenn das Programm seine Arbeit getan hat, fährt es Windows auch brav herunter. Aber was ist, wenn der User Windows neu booten wollte? Dann muss er immer wieder den PC von Hand einschalten. - Gut, nicht weiter tragisch, stört mich nur...
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 30. Apr 2006, 10:17
Zitat von DJ-SPM:
Wenn das Programm seine Arbeit getan hat, fährt es Windows auch brav herunter.
Verstehe ich das richtig? Dein Programm fährt Windows herunter? Wenn dein Programm die Nachricht "wm_endsession" empfängt, ist der ShutDown-/Restart-Vorgang doch schon eingeleitet worden. Dein Programm sollte eigentlich nur die notwendigen Aktionen (Daten sichern etc.) durchführen und anschließend die Kontrolle an Windows zurückgegeben. Ein möglicher Restart dürfte doch dadurch nicht unterbrochen werden.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 1. Mai 2006, 01:11
Mein Programm läuft im Hintergrund ohne Aktion. Wenn es die Nachricht WM_ENDSESSION erhält, führt es seine Arbeit durch. Damit ist der Vorang abgebrochen - oder ist er dann nur "pausiert"? Wenn ja: Wie kann ich den Vorgang weiter druchführen lassen?
Bisheriger Nutzername "DJ-SPM"
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 1. Mai 2006, 08:39
Hallo DJ-SPM,

ich habe hier noch zwei Links für dich, die einen Fehler in einigen Delphi-Versionen (u.a. Delphi 7) beschreiben.

Link1 Link2

Der erste Link ist schon etwas älter (Delphi 1?), beschreibt aber eine mögliche Lösung des Problems. Du solltest versuchen, die Nachricht WM_ENDSESSION abzufangen und dort deine Applikation mit einer Halt-Anweisung zu beenden. Dadurch wird die Kontrolle an Windows zurückgegeben und somit der Shutdown-Vorgang nicht unterbrochen. Ob dazu ein Hook nötig ist, kann ich dir nicht sagen. Ich würde es zunächst in der Behandlungsroutine für WM_ENDSESSION versuchen.

Hoffentlich hilft es...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 1. Mai 2006, 19:06
@DJ-SPM: Hast du schon im MSDN nach WM_ENDSESSION geschaut. Über das Result der Message sollte eigentlich geregelt werden ob der Vorgang abgebrochen wird oder nicht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 1. Mai 2006, 19:07
Zitat von DJ-SPM:
Wenn es die Nachricht WM_ENDSESSION erhält, führt es seine Arbeit durch. Damit ist der Vorang abgebrochen - oder ist er dann nur "pausiert"? Wenn ja: Wie kann ich den Vorgang weiter druchführen lassen?
Damit ist der Vorgang nur pausiert. Fortgesetzt wird er einfach durch das 'inherited' am Ende der Botschaftsbehandlungsroutine:


Delphi-Quellcode:
  TForm1 = class(TForm)
    ...
  private
    ...
    procedure EndSessionHandler(var AMessage : TMessage); message wm_EndSession;
    ...
  public
    ...
  end;
.
.
.
procedure TForm1.EndSessionHandler(var AMessage : TMessage);
begin
  // Ausführen der für diesem Fall noch anstehenden Arbeiten

  inherited;
end;
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 1. Mai 2006, 19:23
Zitat von SirThornberry:
Hast du schon im MSDN nach WM_ENDSESSION geschaut. Über das Result der Message sollte eigentlich geregelt werden ob der Vorgang abgebrochen wird oder nicht.
Bist du ganz sicher, oder verwechselst du das mit WM_QUERYENDSESSION?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Herausfinden ob Neustart, Herunterfahren oder Ruhemodus

  Alt 1. Mai 2006, 19:25
ich hab nach WM_ENDSESSION im MSDN gesucht. Dort steht wenn ich mich recht entsinne das 0 zurück gegeben werden soll wenn eine Anwendung die Message verarbeitet. Möchte man also den Effekt erzielen das die Message nicht verarbeitet wird sollte man nicht 0 zurück geben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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