Avatar billede serial69 Nybegynder
22. april 2001 - 22:09 Der er 5 kommentarer og
1 løsning

veta när sida är färdigladdad

Hej.
Finnd det nåt bra sätt att veta när en sida är färdigladdad, iexplorer är öppnad med createprocess och jag skulle behöva veta när sidan som jag har öppnat är färdigladdad så jag kan göra dom saker som ska göras när sidan är laddad....
Tack på förhand..Tomas



Avatar billede nico26 Nybegynder
22. april 2001 - 22:12 #1
kan vi få den på dansk
Avatar billede hoejrup Nybegynder
22. april 2001 - 22:20 #2
Oversættelse:

Findes der en god metode der kan kontrollerer at en side er loaded færdig. IE åbnes med createprocess og jeg har behov for at vide hvornår siden er loaded færdig, så jeg kan gøre de ting som skal gøres når den er loaded....

På forhånd tak..Tomas

/per
Avatar billede nomiz Nybegynder
22. april 2001 - 22:31 #3
nice, hoejrup!
Avatar billede hoejrup Nybegynder
22. april 2001 - 22:52 #4
nomiz> Tak!
Avatar billede nico26 Nybegynder
23. april 2001 - 04:07 #5
du skal bruge TWebBrowser i stedet for CreateProcess, og så sætte en eventhandler op der kaldes når et dokument er loaded. Det er ret besværligt, men følgende kode skulle virke. Hvis du ikke har TWebBrowser kan du installere den på følgende måde: Components|Import ActiveX Control|Microsoft Internet Controls|Install...
I Delphi5 er installeret som standard


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, SHDocVw_TLB, StdCtrls;

type
  TEventSink = class(TInterfacedObject, IDispatch)
  private
    FConnection: Integer;
    FOwner: IWebBrowser2;
    FOnDocComplete: TNotifyEvent;
  protected
    { IDispatch methods }
    function GetTypeInfoCount(out Count: Integer): HResult; stdcall;
    function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall;
    function GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount,
      LocaleID: Integer; DispIDs: Pointer): HResult; stdcall;
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
      Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
  public
    constructor Create(AOwner: IWebBrowser2);
    destructor Destroy; override;
    property OnDocComplete: TNotifyEvent read FOnDocComplete write FOnDocComplete;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    Browser: IWebBrowser2;
    BrowserEvents: TEventSink;
    procedure WebDocComplete(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses
  ComObj, ActiveX;

{$R *.DFM}

{ TEventSink }

constructor TEventSink.Create(AOwner: IWebBrowser2);
begin
  inherited Create;
  FOwner := AOwner;
  InterfaceConnect(FOwner, DWebBrowserEvents2, Self, FConnection);
end;

destructor TEventSink.Destroy;
begin
  InterfaceDisconnect(FOwner, DWebBrowserEvents2, FConnection);
  inherited Destroy;
end;

function TEventSink.GetTypeInfoCount(out Count: Integer): HResult;
begin
  Count := 0;
  Result := S_OK;
end;

function TEventSink.GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult;
begin
  Result := E_NOTIMPL;
end;

function TEventSink.GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount,
  LocaleID: Integer; DispIDs: Pointer): HResult;
begin
  Result := E_NOTIMPL;
end;

function TEventSink.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
  Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
var
  P: OleVariant;
begin
  if DispID = 108 then //108 = DWebBrowserEvents2.ProgressChange
  begin
    P := OleVariant(TDispParams(Params).rgvarg^[0]);

    if Assigned(FOnDocComplete) and (P = 0) then
      FOnDocComplete(Self);
  end;

  Result := S_OK;
end;

{ TForm1 }

procedure TForm1.WebDocComplete(Sender: TObject);
begin
  ShowMessage(\'Document Loaded\');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Browser := CoShellBrowserWindow.Create;
  BrowserEvents := TEventSink.Create(Browser);
  BrowserEvents.OnDocComplete := WebDocComplete;
  Browser.Visible := True;
end;

end.
Avatar billede serial69 Nybegynder
23. april 2001 - 21:54 #6
Tack
ska kolla upp det då fort som möjligt...

Tomas
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester