![]() |
TWebbrowser für Speedtest in Console
Ich möchte gerne eine kleines Progrämmchen machen welches über
![]() Dies habe ich bis jetzt an Code:
Delphi-Quellcode:
Jetzt stehe ich vor dem Problem, das ich dem Browser kein Ereignis zuweisen kann:
program SpeedTest;
{$APPTYPE CONSOLE} uses OleCtrls, SHDocVw; type TMyClass = class Browser: TWebBrowser; private { Private declarations } procedure WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); protected {...} public constructor Create; reintroduce; destructor Destroy; override; end; constructor TMyClass.Create; begin Browser := TWebBrowser.Create(nil); Browser.OnDocumentComplete := WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); Browser.Navigate('http://wieistmeineip.de/speedtest/run.php'); end; destructor TMyClass.Destroy; begin Browser.free; inherited destroy; end; procedure TMyClass.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin // das 'writeln' ist nur testweise // der eigendliche Code wertet nach dem // 2. Durchlauf die Ergebnisse der SpeedTests aus // da beim 1. Durchlauf nur 'Test läuft' ankommt writeln('Document compled'); end; begin TMyClass.Create; end. [Fehler] SpeedTest.dpr(26): Undefinierter Bezeichner: 'Sender' Der Fehler tritt in dieser Zeile auf:
Delphi-Quellcode:
Wo liegt mein Problem??
Browser.OnDocumentComplete := WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
|
Re: TWebbrowser für Speedtest in Console
Problem wiefolgt gelöst:
Delphi-Quellcode:
Komischerweise wird WebBrowserDocumentComplete nicht durchlaufen... :gruebel: :wiejetzt:
program SpeedTest2;
{$APPTYPE CONSOLE} uses SysUtils, OleCtrls, SHDocVw, ActiveX; type TClass = class(TWebBrowser) Browser: TWebbrowser; procedure WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); end; procedure TClass.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin // das 'writeln' ist nur testweise // der eigendliche Code wertet nach dem // 2. Durchlauf die Ergebnisse der SpeedTests aus // da beim 1. Durchlauf nur 'Test läuft' ankommt writeln('Document compled'); end; begin CoInitialize(nil); with TClass.Create(nil) do begin Browser := TWebBrowser.Create(nil); Browser.OnDocumentComplete := WebBrowserDocumentComplete; Browser.Navigate('http://wieistmeineip.de/speedtest/run.php'); writeln('Taste drücken zum beenden...'); readln; Browser.Free; end; OleUninitialize; end. |
Re: TWebbrowser für Speedtest in Console
*husch-pusch*
|
Re: TWebbrowser für Speedtest in Console
Hallo Harry,
in einer Konsolanwendung gelten andere Gesetze als in einer GUI-Anwendung. Ohne Nachrichtenschleife und ohne grafische Oberfläche kannst du mit TWebBrowser nicht allzuviel anfangen. Vielleicht geht es ja auch ohne:
Delphi-Quellcode:
Die Include-Dateien kannst du dir
program myip;
{$APPTYPE CONSOLE} uses ActiveX, Classes, MSHTML, Windows, idHTTP, SysUtils; const URL = 'http://www.wieistmeineip.de'; var s: TStream; doc: IHTMLDocument2; {$I Proc.ProcessMessages.pas} {$I Func.LoadDocument.pas} {$I Func.UrlDownload.pas} begin CoInitialize(nil); s := TMemoryStream.Create; if UrlDownload(URL, s) = 200 then begin doc := CoHTMLDocument.Create as IHTMLDocument2; if LoadDocument(doc, s) then begin WriteLn(Format('%s (%.0n)', [doc.title, 1.0 * s.Size])); end else WriteLn('LoadDocument() failed') end else WriteLn('UrlDownload() failed'); s.Free; end. ![]() Grüße vom marabu |
Re: TWebbrowser für Speedtest in Console
Hey marabu
Thx für die Mühe. Das löst zwar nicht ganz das Problem aber das Haptproblem. Ich weiss jetzt das ich vom Server eine eindeutige ID bekomme mit welcher ich dann mit ![]() "Consolen-WebBrowser" :wall: :wall: :wall: :mrgreen: Hast Du vielleicht noch einen Tip woher weiß ich wie lange der Test dauert?? |
Re: TWebbrowser für Speedtest in Console
Guten Morgen.
Der Test wird so lange dauern wie er dauert - es werden ja feste Datenmengen übertragen. Der Wechsel des URL von run.php nach ergebnis.php dürfte interessant sein. marabu |
Re: TWebbrowser für Speedtest in Console
Morgen,
Das Problem stellt sich gegenwärtig so dar: Hauptseite wird übertragen, ich bekomme meine ID danach endet das Programm. Wenn ich jetzt die Sache mit dem TWebbrowser nachstelle und mir in ein Memo bei WebBrowserBeforeNavigate2 die URL mitloggen lasse komme ich halt auf das Ergebnis das zuerst die \run.php dann die \show.php+id angesteut wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz