Einzelnen Beitrag anzeigen

APieroth

Registriert seit: 27. Sep 2006
Ort: Bremen
6 Beiträge
 
#1

Delphi: Aktion vor Programmende ausführen

  Alt 7. Jul 2010, 07:17
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;
  Mit Zitat antworten Zitat