Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Frage zum Disconnect mit Indy und einer TCP/IP Verbindung

  Alt 16. Jun 2015, 11:27
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 = 'OKthen begin
          GetFileFromServer (AsStr (['UserId=' + MyNetUserID, 'cmd=GetThisFile', 'Password=' + LastPW, 'FileName=' + LastNetFile]));
        end;
        LastNetFile := '';
      end;
    end;
  end;

  inherited;

end;
  Mit Zitat antworten Zitat