0

特定の URL を拒否する IE BHO を開発しています。ターゲット URL が 1 つ見つかったら、警告を表示している Web ページの上に iframe を 1 つ開きたいと思います。ユーザーの URL を見つけるために、BeforeNavigate2 イベントを使用しています。ターゲット URL が見つかったら、iframe を作成します。したがって、今のところコードは次のとおりです。

procedure DoBeforeNavigate2(
               const pDisp: IDispatch;
               var URL: OleVariant;
               var Flags: OleVariant;
               var TargetFrameName: OleVariant;
               var PostData: OleVariant;
               var Headers: OleVariant;
               var Cancel: WordBool
               );
var
Document: IHTMLDocument2;
iFrame: IHTMLElement;
begin
  Document:= IE.Document as IHTMLDocument2;
  iFrame:= Document.createElement('iframe');
  iFrame.setAttribute('src', 'http://www.google.com/', 0);
  iFrame.setAttribute('id', 'iFrame', 0);
  iFrame.setAttribute('style', 'position: fixed; left: 0px; top: 0px; border: 0px; width: 100%; height: 100%; background-color: white', 0);
end;

すべてのウェブサイトの上にある google.com で iframe を開くことになっていますが、IE をクラッシュさせるだけです...誰かがこれを解決するのを手伝ってくれますか?ありがとう!

4

1 に答える 1

1

ページはまだに読み込まれていませんBeforeNavigate2。でこれを試してみてくださいDocumentCompleteIWebBrowser2オブジェクトをBHOのメソッドSetSiteに保存pDispし、同じオブジェクト(QIからIWebBrowser2最初)であることを確認して、ページがメインのブラウザーウィンドウ(フレームではなく)に読み込まれていることを確認します。そうすれば、現在のコードと同じようにiframeを挿入できるはずです。Delphiがわからないので、それが何であるかわからないのかもしれませんが、代わりにオブジェクトのプロパティをIE.Document使用する必要があります。DocumentIWebBrowser2

于 2012-09-27T16:33:30.007 に答える