AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TService: OnShutdown feuert nicht

Ein Thema von bcvs · begonnen am 28. Okt 2020 · letzter Beitrag vom 30. Okt 2020
Antwort Antwort
Seite 1 von 2  1 2      
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#1

TService: OnShutdown feuert nicht

  Alt 28. Okt 2020, 08:50
Hallo zusammen,

ich will in einem Dienst auf das Herunterfahren von Windows reagieren. Dazu verwende ich den Event OnShutdown. Der feuert auch bei "Neu starten" von Windows, allerdings nicht beim "Herunterfahren" und anschließendem manuellen Neustart.

Im zweiten Fall wird auch beim Neustart das OnStart nicht durchlaufen.

Was ist da los?
Oder gibt es eine andere Methode, auf das Herunterfahren des Computers zu reagieren und vorher noch eine kurze Aktion auszuführen?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: TService: OnShutdown feuert nicht

  Alt 28. Okt 2020, 10:28
Feuert das Event denn, wenn du beim Herunterfahren des Systems die Shift-Taste gedrückt hältst?

Wenn ja, wundert mich das nicht, dass da kein Shutdown-Signal gefeuert wird, da Windows seit Win8 standardmäßig nicht mehr heruntergefahren wird sondern nur die Nutzersitzung beendet und anschließend das System in den Ruhezustand versetzt wird. Dieses "Feature" wird von Microsoft als Schnellstart (Fast Boot) bezeichnet, und wenn man das nicht braucht/möchte, kann man es deaktivieren.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: TService: OnShutdown feuert nicht

  Alt 28. Okt 2020, 10:40
Das ist auch der Grund, warum man die Developer-Instanz des Interbase Servers in so einem Fall nach 24 Stunden trotzdem einmal neu starten muss, obwohl das System ja gerade "hochgefahren" wurde.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#4

AW: TService: OnShutdown feuert nicht

  Alt 28. Okt 2020, 11:20
Feuert das Event denn, wenn du beim Herunterfahren des Systems die Shift-Taste gedrückt hältst?
Ja, dann feuert es.

Das heißt aber, dass das OnShutdown für meine Zwecke ungeeignet ist.
Gibts es da noch andere Möglichkeiten, das Herunterfahren oder Beenden der Nutzersitzung zu erkennen?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: TService: OnShutdown feuert nicht

  Alt 28. Okt 2020, 11:32
Hast du mal OnPause und OnContinue versucht?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#6

AW: TService: OnShutdown feuert nicht

  Alt 28. Okt 2020, 14:26
Ja, das reagiert aber nur auf anhalten / fortsetzen in der Dienstverwaltung.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#7

AW: TService: OnShutdown feuert nicht

  Alt 29. Okt 2020, 13:03
Ich habe es jetzt anders gelöst: Mein Tool läuft nicht mehr als Dienst, sondern als Programm mit Icon im Infobereich der Taskleiste.
Da reagiere ich auf WM_ENDSESSION.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TService: OnShutdown feuert nicht

  Alt 29. Okt 2020, 19:01
Bekommt der Dienst kein WM_ENDSESSION?
$2B or not $2B
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#9

AW: TService: OnShutdown feuert nicht

  Alt 30. Okt 2020, 09:31
Nein, hat ja kein Fenster.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TService: OnShutdown feuert nicht

  Alt 30. Okt 2020, 10:50
Nein, hat ja kein Fenster.
Braucht er auch nicht, naja, nicht direkt,
aber nein, dein Dienst hat ein "Fenster", siehe Application.

TService nutzt intern die VCL, für die Messagebehandlung.
Forms.Application.Handle (HWND) ist das Basis-MessageWindow der VCL.



SvcMgr.Application (TServiceApplication) die hauptklasse des Delphi-Services,
aber intern wird auf Forms.Application (TApplication) zugrgriffen ... das kannst du auch, indem du die Unit Forms einbindest.

Bzw. du kannst auch Delphi-Referenz durchsuchenTApplicationEvents verwenden. Ist eh besser als direkt auf die Events von Forms.Application zuzugreifen.


Message-Only Window: Das sind unsichtbare "Fenster" ohne Parent ... SystemMessages werden von Windows an alle TopLevel-Windows gesendet.

Du kannst auch selbst ein Message-Only Window erstellen. (PS: jeder VCL-TTimer hat intern auch sein eigenes Fenster)
https://docs.microsoft.com/en-us/win...e-only-windows
$2B or not $2B
  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 22:59 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