na ja, es muß ja irgendwie möglichsein die Cockies direkt vom IE zu erfragen ... die temprären Dateien kann man ja auch erfragen und ändern.
und es muß nicht unbedingt sein, daß die Seite grade im IE geladen wird/wurde.
unter umständen kann es auch sein, daß für die Seite ein autologin eingerichtet wurde, was aber nicht immer de Fall ist.
da TWebbrowser ja den IE kapselt und somit automatisch dessen Cockies verwendet, läuft dieses erstmal von der gewünschten Funktion her nicht schlecht, aber eben nicht optimal.
Delphi-Quellcode:
Function TForm1.DownloadFile(
Const URL:
String):
String;
Var D: TDateTime;
Label NeuStart;
Begin
Try
NeuStart:
//WebBrowser1.Stop;
D := Now;
WebBrowser1.Tag := 0;
WebBrowser1.Navigate(
URL);
While WebBrowser1.Tag = 0
do Begin
If Application.Terminated
Then Begin
Result := '
';
Exit;
End;
If Now - D > 1/24/60/60*30
Then Begin
WebBrowser1.Navigate('
');
Application.ProcessMessages;
Sleep(100);
Goto NeuStart;
End;
Application.ProcessMessages;
Sleep(25);
End;
Result := (WebBrowser1.Document
as IHTMLDocument2).body.outerHTML;
//WebBrowser1.Navigate('');
Except
Result := '
';
Application.MessageBox(PChar(
Exception(ExceptObject).
Message),
PChar(Caption + '
- Programmfehler'), MB_OK);
Application.Terminate;
End;
End;
Procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
Const pDisp: IDispatch;
Var URL: OleVariant);
Begin
If TWebBrowser(Sender).Tag = 0
Then TWebBrowser(Sender).Tag := 1;
End;
mir wäre es da lieber, wenn es schneller ginge und nicht die Datei erst angezeigt werden müßte.
es sieht blöd aus, wenn die Anzeige 'ne weile verschwindet, dafür dann die runterzuladene Datei angezeigt wird und dann muß die alte Anzeige wieder neu zusammengestellt werden.
außerdem ist es möglich, wärend die Datei geladen wird (da die auch nicht immer klein ist und das Internet hier am testrechner nicht grade schnell), daß man als User da in den Download eingreifen kann ... mit IE-Popup und auch über die Tastatur kann TWebbrowser ja auch gesteuert werden.
ESC=Download abbrechen
Backspace=Seite zurück (vorherige Seite laden)
usw.