AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TWebbrowser für Speedtest in Console

Offene Frage von "Harry M."
Ein Thema von Harry M. · begonnen am 19. Mär 2006 · letzter Beitrag vom 20. Mär 2006
Antwort Antwort
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#1

TWebbrowser für Speedtest in Console

  Alt 19. Mär 2006, 03:42
Ich möchte gerne eine kleines Progrämmchen machen welches über www.wieistmeineip.de einen Speedtest durchführt. Als "normale" VCL-Anwendung habe ich es zum laufen bekommen. Ich möchte aber das Tool als Console haben, und da fangen die problem an...

Dies habe ich bis jetzt an Code:

Delphi-Quellcode:
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.
Jetzt stehe ich vor dem Problem, das ich dem Browser kein Ereignis zuweisen kann:
[Fehler] SpeedTest.dpr(26): Undefinierter Bezeichner: 'Sender'

Der Fehler tritt in dieser Zeile auf:

Browser.OnDocumentComplete := WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); Wo liegt mein Problem??
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#2

Re: TWebbrowser für Speedtest in Console

  Alt 19. Mär 2006, 06:27
Problem wiefolgt gelöst:
Delphi-Quellcode:
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.
Komischerweise wird WebBrowserDocumentComplete nicht durchlaufen...
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#3

Re: TWebbrowser für Speedtest in Console

  Alt 19. Mär 2006, 20:40
*husch-pusch*
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TWebbrowser für Speedtest in Console

  Alt 19. Mär 2006, 21:03
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:
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.
Die Include-Dateien kannst du dir hier besorgen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#5

Re: TWebbrowser für Speedtest in Console

  Alt 20. Mär 2006, 06:16
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 http://wieistmeineip.de/speedtest/show.php?+ID das Result abfragen kann kann. Der Rest läst sich regeln. Der Consolen-Webbrowser rennt ja jetzte.

"Consolen-WebBrowser"

Hast Du vielleicht noch einen Tip woher weiß ich wie lange der Test dauert??
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: TWebbrowser für Speedtest in Console

  Alt 20. Mär 2006, 07:02
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
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#7

Re: TWebbrowser für Speedtest in Console

  Alt 20. Mär 2006, 08:33
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.
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 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