在自制的 IE 浏览器中点击 Link  时 不让 调用 Windows 的 IE .....直接调用自制的IE  打开...
用下面的 代码可以 实现...
但 有 些问题..procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
var   newForm: TForm1;
  begin
    newForm := TForm1.Create(self);
    newForm.Visible:=true;
    ppDisp :=  newform.WebBrowser1.ControlInterface;
    Cancel:=false;
end;他开的 虽然是新窗口,,但 只是 在程序里的 新 Form ..而不是 真正的 Myie  ...
如果你关掉主窗口的话.以后开的 新 Form 都会关闭...如果用 VB 编 myie 的话  打开新link时 产生的新Form 会在任务栏 显示
而且当你关掉 第一个打开的 Form时..后生成的新 Form 还存在.不会被关闭但 Delphi   怎么样才能实现这样的 效果
哪位高人 来 讲一下...
最好把 代码都 贴上来..谢谢 .. 

解决方案 »

  1.   

    在FormCreate里面写 WebBrowser1.Navigate(ParamStr(1));
    在BeforeNavigate的事件里写:WinExec(PChar(AnsiQuotedStr(ParamStr(0),'"')+' '+ AnsiQuotedStr(新的URL,'"') ));
      

  2.   

    You can use a hidden main form to control all the browser windows.
      

  3.   

    我给你做了一个:
    dfm:object Form1: TForm1
      Left = 402
      Top = 133
      Width = 696
      Height = 480
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object WebBrowser1: TWebBrowser
        Left = 32
        Top = 18
        Width = 587
        Height = 334
        TabOrder = 0
        OnNewWindow2 = WebBrowser1NewWindow2
        ControlData = {
          4C000000AB3C0000852200000000000000000000000000000000000000000000
          000000004C000000000000000000000001000000E0D057007335CF11AE690800
          2B2E126208000000000000004C0000000114020000000000C000000000000046
          8000000000000000000000000000000000000000000000000000000000000000
          00000000000000000100000000000000000000000000000000000000}
      end
      object Button1: TButton
        Left = 95
        Top = 381
        Width = 75
        Height = 25
        Caption = 'Button1'
        TabOrder = 1
        OnClick = Button1Click
      end
      object Panel1: TPanel
        Left = 247
        Top = 370
        Width = 99
        Height = 59
        BevelOuter = bvNone
        TabOrder = 2
        Visible = False
        object WebBrowser2: TWebBrowser
          Left = 6
          Top = 13
          Width = 40
          Height = 17
          TabOrder = 0
          OnBeforeNavigate2 = WebBrowser2BeforeNavigate2
          OnNewWindow2 = WebBrowser1NewWindow2
          ControlData = {
            4C000000AB3C0000852200000000000000000000000000000000000000000000
            000000004C000000000000000000000001000000E0D057007335CF11AE690800
            2B2E126208000000000000004C0000000114020000000000C000000000000046
            8000000000000000000000000000000000000000000000000000000000000000
            00000000000000000100000000000000000000000000000000000000}
        end
      end
    end
      

  4.   

    source:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        WebBrowser1: TWebBrowser;
        Button1:     TButton;
        Panel1:      TPanel;
        WebBrowser2: TWebBrowser;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
          var Cancel: wordbool);
        procedure WebBrowser2BeforeNavigate2(Sender: TObject;
          const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
          Headers: olevariant; var Cancel: wordbool);
      private
        { Private declarations }
      public
        TargetURL: string;
        { Public declarations }
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      WebBrowser1.Navigate('http://community.csdn.net/');
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      WebBrowser1.Navigate(ParamStr(1));
    end;procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: wordbool);
    begin
      ppDisp := WebBrowser2.DefaultInterface;
    end;procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: olevariant; var Cancel: wordbool);
    begin
      WinExec(PChar(AnsiQuotedStr(ParamStr(0), '"') + ' ' +
        AnsiQuotedStr(URL, '"')), SW_NORMAL);
      Cancel := True;
    end;end.
      

  5.   

    看你这么辛苦 ..给你分了..
    不过不是我想要的.
    你这样 的话  是 直接再调用一次 程序 .也就是说 系统进程里 会有 两个 myie进程 . 
    而不是 只有一个进程 ,,简单点说..我说的意思 是..让 myie 开新 Form 在任务栏 里 显示..(系统进程 只有一个 myie进程 .)...