![]() |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
[QUOTE=Photoner;1305223]Ja die Message gibt es.
Eine schnelle Suche ergab: WM_ENDSESSION message ![]() Ich glaube, es geht hier nicht das Herunterfahren. Die Notebooks schalten die Bildschirm ab und sind in einer Art Energiesparmodus. Ein Tastendruck und sie sind direkt wieder da. Allerdings wird hier ein Anmeldebildschirm angezeigt (wo ich aber kein Passwort erneut eingeben muss, da ich das so eingestellt habe). Also wird es eher um eine Abmeldenachricht gehen. Oder gibt es auch eine spezielle, ich gehen jetzt in den Energiespar-Modus Nachricht? Die Clients empfangen jedenfalls keine Nachrichten vom Server, wenn sie in diesem Energiesparmodus sind (hier im Beispiel Windows 8.1 auf dem Surface Pro 3). |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Zitat:
Zitat:
![]() |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Oh weh, 6 Jahre her und schon vergessen...
Bei dieser Diskussion kam eine dunkle Erinnerung hoch und siehe da, hatte vor längerer Zeit diese Problematik in einer anderen Client/Server Anwendung schon mal eingebaut, also für alle, die das evtl. mal brauchen könnten, hier, wie es geht:
Delphi-Quellcode:
procedure TF_Main.WMPowerBroadcast(var MyMessage: TMessage);
begin if MyMessage.Msg = WM_POWERBROADCAST then begin // windows powermanagement message if (MyMessage.WParam = PBT_APMSUSPEND) or (MyMessage.WParam = PBT_APMSTANDBY) or (MyMessage.WParam = PBT_APMQUERYSUSPEND) or (MyMessage.WParam = PBT_APMQUERYSTANDBY) then begin // Hier hin, was getan werden muss, bevor Windows in den Standby darf, // z.B. Netzwerk- oder Datenbankverbindungen trennen, Timer abstellen, etc. // Seit Vista hat man hier nur noch max. 2 Sekunden Zeit was zu erledigen. if NetFileMode then begin mnu_CloseMainFileClick (self); end; MyMessage.Result := 1; // Standby/Ruhezustand erlauben // MyMessage.Result := BROADCAST_QUERY_DENY; // Standby/Ruhezustand verweigern end else if (MyMessage.WParam = PBT_APMRESUMECRITICAL) or (MyMessage.WParam = PBT_APMRESUMESUSPEND) or (MyMessage.WParam = PBT_APMRESUMESTANDBY) then begin // Windows kommt aus dem Standby/Ruhezustand wieder. // Hier z.B. Verbindungen wiederherstellen. hs_delay (2000, True); if LastNetFile <> '' then begin if EstablishServerConnection = 'OK' then begin GetFileFromServer (AsStr (['UserId=' + MyNetUserID, 'cmd=GetThisFile', 'Password=' + LastPW, 'FileName=' + LastNetFile])); end; LastNetFile := ''; end; end; end; inherited; end; |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
[QUOTE=BUG;1305239]
Zitat:
|
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Hallo,
vielen Dank! Das ist genau das was ich gesucht habe! :thumb: |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Zitat:
|
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Zitat:
![]() Wenn es denn geht. |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Wobei ich feststellen muss, dass man sich jetzt wohl für die Broadcast-Nachricht explizit registrieren muss, um diese zu erhalten (war früher definitiv nicht so).
Habe hier weitere Informationen dazu gefunden: ![]() Allerdings meckert der Compiler hier: FHPOWERNOTIFY := RegisterPowerSettingNotification(Handle, @GUID_MONITOR_POWER_ON, DEVICE_NOTIFY_WINDOW_HANDLE); und sagt TGUID und Pointer seien Inkompatible Typen Die Variable ist als const GUID_MONITOR_POWER_ON: TGUID = '{02731015-4510-4526-99e6-e5a17ebd1aea}'; definiert. Wie geht's richtig? |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Wobei es mehrere GUIDS gibt. Welche mag wohl die richtige für den Energiesparmodus sein:
Delphi-Quellcode:
GUID_POWERSCHEME_PERSONALITY: TGUID = '{245d8541-3943-4422-b025-13A784F679B7}';
GUID_MIN_POWER_SAVINGS: TGUID = '{8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c}'; GUID_MAX_POWER_SAVINGS: TGUID = '{a1841308-3541-4fab-bc81-f71556f20b4a}'; GUID_TYPICAL_POWER_SAVINGS: TGUID = '{381b4222-f694-41f0-9685-ff5bb260df2e}'; GUID_ACDC_POWER_SOURCE: TGUID = '{5d3e9a59-e9D5-4b00-a6bd-ff34ff516548}'; GUID_BATTERY_PERCENTAGE_REMAINING: TGUID = '{a7ad8041-b45a-4cae-87a3-eecbb468a9e1}'; GUID_IDLE_BACKGROUND_TASK: TGUID = '{515c31d8-f734-163d-a0fd-11a08c91e8f1}'; GUID_SYSTEM_AWAYMODE: TGUID = '{98a7f580-01f7-48aa-9c0f-44352c29e5C0}'; GUID_MONITOR_POWER_ON: TGUID = '{02731015-4510-4526-99e6-e5a17ebd1aea}'; |
AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung
Delphi-Quellcode:
Lass das mit dem @. Parameter ist vom Typ TGUID.
function RegisterPowerSettingNotification(const hRecipient: THandle;
const PowerSettingGuid: TGUID; const Flags: DWORD): HPOWERNOTIFY; stdcall; PBT_APMSUSPEND event ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz