Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi: Aktion vor Programmende ausführen (https://www.delphipraxis.net/152789-delphi-aktion-vor-programmende-ausfuehren.html)

APieroth 7. Jul 2010 07:17

Delphi: Aktion vor Programmende ausführen
 
Hallo ihr Kundigen,

ich habe ein kleines Problem: Ich habe ein Programm geschrieben, das ein Formular mit einer Webbroser Komponente enthält, über die ich eine https:// Seite aufrufe um Meldungen an Prowl (pushed Nachrichten an das iPhone) zu senden.
Unter anderem möchte ich dabei gerne auch eine Nachricht senden, wenn mein Programm beendet wird (egal, ob über einen Beenden-Button oder durch Herunterfahren des Rechners). Zum Versand einer Nachricht rufe ich die Routine SendProwlMessage auf, was auch ganz prima funktioniert, zumindest, solange das Programm nicht beendet wird.
Wird es jedoch beendet, so rufe ich ebenfalls die Routine SendProwlMessage('Programm wird beendet') in TForm1.FormDestroy auf. Leider wird keine Meldung mehr ausgegeben, ich vermute, weil die Webbrowserkomponente schon beendet wurde?

Was kann ich tun?

MfG

A. Pieroth

Delphi-Quellcode:
function TProwlPushForm.WaitForBrowser(WB: TWebbrowser; TimeOut: Integer = 8000): Boolean;
var
  StartTime, EndTime: DWORD;
begin
  Result := False;
  StartTime := GetTickCount;
  repeat
    Application.ProcessMessages;
    EndTime := GetTickCount;
  until (WB.ReadyState = READYSTATE_COMPLETE) or (Application.Terminated) or (EndTime - StartTime > TimeOut);
  Result := WB.ReadyState = READYSTATE_COMPLETE;
end;


procedure TProwlPushForm.SendProwlMessage(Nachricht: string);
var s: string;

begin
    ProwlApi.apikey:= settings.ProwlApiKey;
    ProwlApi.priority:='0';
    ProwlApi.application:= settings.ProwlApplication;
    ProwlApi.event:= settings.ProwlEvent;
    s:= ProwlUrl+'add?apikey='+ProwlApi.apikey+'&priority='+ProwlApi.priority+'&application='
      +ProwlApi.application+'&event='+ProwlApi.event+'&description='+utf8encode(Nachricht);
    WebBrowser1.Navigate(s);
    WaitForBrowser(WebBrowser1, 5000);
end;

mkinzler 7. Jul 2010 07:21

AW: Delphi: Aktion vor Programmende ausführen
 
Am Besten im CloseQuery der Hauptform

himitsu 7. Jul 2010 07:45

AW: Delphi: Aktion vor Programmende ausführen
 
Oder OnClose.

Bin mir grad nicht sicher, ob CloseQuery beim Runterfahren unbedingt aufgerufen wird.
Es gibt einige Fällte wo Delphi dieses nicht aufruft und die Form ohne Rückfrage schließt.

mkinzler 7. Jul 2010 07:48

AW: Delphi: Aktion vor Programmende ausführen
 
Ja wird. OnClose aber nicht unbedingt

APieroth 7. Jul 2010 07:57

AW: Delphi: Aktion vor Programmende ausführen
 
Jep, hat hingehauen! Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 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