AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Shutdown verhindern ohne Taskdialog
Thema durchsuchen
Ansicht
Themen-Optionen

Shutdown verhindern ohne Taskdialog

Ein Thema von Andreas L. · begonnen am 7. Apr 2007 · letzter Beitrag vom 7. Apr 2007
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

Shutdown verhindern ohne Taskdialog

  Alt 7. Apr 2007, 22:46
Hi,
ich fange die Nachricht WMQueryEndSession ab um noch ein paar Aufgaben vor dem Herunterfahren zu erledigen. In diesem Test nur um die Bildschirmauflösung zu ändern um ein schönes Bildchen anzuzeigen

Delphi-Quellcode:
procedure TForm1.WMQueryEndSession;
  begin
    Msg.Result := 0;

    ChangeResolution(640, 480, 32);

    Show;

    sleep(5000);

    ChangeResolution(1280, 1024, 32);

    Hide;

    Msg.Result := 1;
  end;
Leider wird meine Form von einem Taskdialog, ihr wisst schon, diese "programm lässt sich nicht beenden" dialoge. Wie kann ich verhindern das so ein Dialog angezeigt wird?

Nächtliche Grüße,
Andy
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Shutdown verhindern ohne Taskdialog

  Alt 7. Apr 2007, 22:50
das problem ist dass die message erst nach ende der prozedur "verändert" wird.

Delphi-Quellcode:
const
  UM_Blubb = WM_User + 1;

procedure TForm1.WMQueryEndSession;
begin
  // Abbrechen des herunterfahrens
  Msg.Result := 0;
  // Sich selber ne nachricht schicken
  PostMessage( self.handle, UM_Blubb,0,0 );
end;

procedure TForm1.UMBlubb;
begin
  ChangeResolution(640, 480, 32);
  Show;
  sleep(5000);
  ChangeResolution(1280, 1024, 32);
  Hide;

// Msg.Result := 1;
// Windows herunterfahren... hab ich grad ned da wie genau
end;
sollte funktionieren...

gruß
reli

// Edit: nen "M" vergessen .. pardon
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

Re: Shutdown verhindern ohne Taskdialog

  Alt 7. Apr 2007, 23:16
Habs jetzt so gelöst:
Delphi-Quellcode:
var
 Done: Boolean;

 ...
 ...

procedure TForm1.WMQueryEndSession;
  begin

  if not Done then
   begin

    Msg.Result := 0;

   end
  else
   begin

    Msg.Result := 1;

   end;

  end;

procedure TForm1.FormPaint(Sender: TObject);
begin

 Hide;
 Done := False;

end;

procedure TForm1.WMEndSession;
begin

 ChangeResolution(640, 480, 32);
 Show;
 sleep(5000);
 ChangeResolution(1280, 1024, 32);
 Hide;
 Done := True;
 ExitWin(EWX_REBOOT);
 
end;
Da beim Aufruf von ExitWin(EWX_REBOOT) die Message WMQueryEndSession erneut gesendet wird, verwende ich eine globale Variable vom Typ Boolean um festzustellen ob die Aktion bereits durchgeführt wurde.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Shutdown verhindern ohne Taskdialog

  Alt 7. Apr 2007, 23:17
jo klar hatte ich vergessen.. sonst hängst in ner endlosschleife...
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: Shutdown verhindern ohne Taskdialog

  Alt 7. Apr 2007, 23:26
Nachdem Aufruf von ExitWin(...) sollte auch noch ein Application.Terminate; folgen da sonst der "Anwendung lässt sich nicht beenden"-Dialog trotzdem für ein paar Milisekunden erscheint. Jedoch kommt dieser Dialog diesmal erst nachdem die Aktionen durchgeführt wurden.
  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 12:36 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