6

実行時に作成され、バックグラウンドで使用される TWebBrowser オブジェクトがあります。つまり、表示されません。問題は、OnDocumentComplete のようなイベントが機能しないか、Delphi2009 でトリガーされないことです。何かアドバイス?

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  FWebBrowser:= TWebBrowser.Create(Self);
  FWebBrowser.RegisterAsBrowser:= True;
  FWebBrowser.OnDocumentComplete:= WhenDocIsCompleted;
end;

procedure TfrmMain.WhenDocIsCompleted(ASender: TObject; const pDisp: IDispatch;
  var URL: OleVariant);
begin
  ShowMessage('Doc is completed!');
end;

Navigate と Navigate2 の間に重要な違いはありますか? ここで Cookie を有効にするにはどうすればよいですか?

前もって感謝します。

4

5 に答える 5

6
TWinControl(FWebBrowser).Parent := Form1;  // Parent property is read-only unless cast
于 2011-03-12T16:41:43.963 に答える
2

この問題は、TWebBrowser が内部的に親フォームのハンドルと密接に連携してウィンドウから投稿されたメッセージを取得するために発生する可能性があります。TWebBrowser をオンにして非表示のフォームを使用してみてください (オプションで実行時に作成することもできます)。また、HandleAllocated および HandleNeeded メソッドが役立つかどうかを調べてください。

于 2009-12-29T19:48:31.283 に答える
2

OnDocumentComplete 問題の呼び出し:

WebBrowser1.HandleNeeded;

またはあなたの場合:

FWebBrowser.HandleNeeded;

webBrowser.Navigate の前

于 2014-08-06T18:04:54.080 に答える
1

Web ページの Cookie と完全に連携するコンポーネントは、EmbeddedWBの TEmbeddedWB であり、無料です。

于 2009-12-27T16:31:19.923 に答える
1
procedure TForm1.ReCreateBrowser();
begin
    if(WebBrowser <> NIL) then
    begin
       WebBrowser.Stop;
       WebBrowser.Destroy;
    end;

    WebBrowser        := TWebBrowser.Create(Form1);
    TWinControl(WebBrowser).Name   := 'WebBrowser';
    TWinControl(WebBrowser).Parent := Form1; //set parent...can be panel, tabs etc
    WebBrowser.Silent := true;  //don't show JS errors
    WebBrowser.Visible:= true;  //visible...by default true

    //don't set width/heigh/top/left before TWinControl(WebBrowser).Parent := Form1;
    WebBrowser.Top    := 10;
    WebBrowser.Left   := 10;
    WebBrowser.Height := 600;
    WebBrowser.Width  := 800;
    WebBrowser.OnDocumentComplete  := WebBrowserDocumentComplete;
  //WebBrowser.OnNavigateComplete2 := WebBrowserNavigateComplete2;
end;
于 2013-09-12T14:55:51.683 に答える