AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

Ein Thema von Lefko · begonnen am 31. Dez 2003 · letzter Beitrag vom 26. Feb 2004
Antwort Antwort
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#1

Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 31. Dez 2003, 12:24
Hallo Freunde ,

ich hab manchmal das Problem, dass ich mein Programm mit dem Shutdown-Befehl aus der CodeLibrary runterfahren will, dabei aber irgendein Programm abschmiert und der PC hängenbleibt...
In meiner Log-Datei steht aber dann trotzdem "erfolgreich runtergefahren...", weil das ja vor dem SD-Befehl geschrieben wird.

Gibt es ne Möglichkeit, NACH dem Shutdown-Befehl noch was mit dem Programm zu machen?

1. Das Programm zu schließen (geht nicht mit Application.Terminate nach dem SD-Befehl...)
2. Zu prüfen, ob der PC auch wirklich runtergefahren wird


weiss jemand rat?

MfG Lefko.
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 3. Jan 2004, 17:49
Wie, was, da kann keiner was zu sagen?!
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 7. Jan 2004, 19:00
*push*
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 7. Jan 2004, 19:03
Moin Lefko,

schau Dir dazu mal die Message WM_QUERYENDSESSION an.
(im PSDK oder auf MSDN)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 1. Feb 2004, 13:16
Ja, hab mir das mal durchgelesen bei der MSDN...
aber ich weiss nich so ganz, was ich damit jetz anfangen kann bzw. wie ich das umsetzen kann!

Code:
[color=blue]WM_QUERYENDSESSION[/color]

The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls the ExitWindows function. If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.

After processing this message, the system sends the WM_ENDSESSION message with the wParam parameter set to the results of the WM_QUERYENDSESSION message.

A window receives this message through its WindowProc function.


LRESULT CALLBACK WindowProc(
  HWND hwnd,         // handle to window
  WM_QUERYENDSESSION, // the message to send
  WPARAM wParam,     // not used
  LPARAM lParam      // logoff option
);


[color=blue]Parameters[/color]

[color=blue]wParam [/color]
This parameter is reserved for future use.

[color=blue]lParam [/color]
If this parameter includes ENDSESSION_LOGOFF, the user is logging off. (Note that this parameter is a bit mask. To test for this value, use a bit-wise operation; do not test for equality.)
If this parameter is zero, the system is shutting down.

[color=blue]Return Values[/color]
If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE.

[color=blue]Remarks[/color]
By default, the DefWindowProc function returns TRUE for this message.


When an application returns TRUE for this message, it receives the WM_ENDSESSION message and it is terminated, regardless of how the other applications respond to the WM_QUERYENDSESSION message.

[color=blue]Windows Me/98/95:[/color] After all applications return TRUE for this message, they receive the WM_ENDSESSION and they are terminated.
Wie kann mein Programm den jetzt überprüfen, ob alle Programme ordentlich beendet wurden und das System runterfährt?

Ich kann sowas nicht in Code übersetzen...

daher wäre ich für ne Unterstützung in Form von Erklärten Anweisungen oder gar Code sehr dankbar

MfG Lefko.


//Edith sagt: Man, jetz hab ich schon dreimal editiert und s geht immer noch nicht! Wieso kann man in diesem dummen Code-Text keinerlei Farben oder fett/kursiv etc. benutzen!?
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 2. Feb 2004, 02:01
Kann mir keiner dabei helfen?
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 2. Feb 2004, 04:18
Überschreibe die WndProc und fang eben WM_QUERYENDSESSION ab. Aber nicht vergessen als MessageResult True zurückzugeben, sonst blockierst du selber das Rinterfahren. Hat Windows von allen Toplevel-Fenstern das OK bekommen, schickt es noch mal ein WM_ENDSESSION.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 13. Feb 2004, 21:01
Hm, ich bin ja dankbar für deine Tipps, du kannst das sicher auch locker programmieren, aber ich kann mit diesen Tipps fast nix anfangen, weil ich nicht weiss, was sie bedeuten..."überschreibe die WndProc" aha.. hab ich schon mal gehört...

ich will nich als faul gelten, deshalb würd ich dich bzw. euch bitten, mir links zu tutorials oder sonstige möglichkeiten, sich da etwas reinzuarbeiten, zu posten!

Ich verstehe das System (noch) nicht, das hinter dem Senden/Empfangen/Auswerten von Nachrichten steckt...

Danke schonmal

MfG Lefko
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 26. Feb 2004, 20:44
Huhu, hat keiner Tutorials oder sonstige Hilfen für mich?

Ich kann mir leider nix selbst zusammenreimen, weil ich dafür zuwenig Ahnung habe von Messages und so....

Wäre toll, wenn ihr mir doch noch helfen könntet!
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Überprüfen, ob Shutdown-Befehl korrekt ausgeführt wurde

  Alt 26. Feb 2004, 20:56
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure WndProc(var msg: TMessage); override;
  end;

const
  MyMessage = WM_USER+1974;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WndProc(var msg: TMessage);
begin
  inherited;
  case msg.Msg of
    MyMessage: ShowMessage('Huhu');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SendMessage(Handle, MyMessage, 0, 0);
end;
Und das machst du jetzt mit WM_QUERYENDSESSION.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:00 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