我做了一个和IE一样的浏览器(注意是IE,不是腾训那种多页面的)
可是在打开一个新页面的时候不知道怎么写了(不能用create(self)),求助解决办法!还有我不知道如何实现像IE一样打开历史栏的功能!大家帮忙,谢谢!!!

解决方案 »

  1.   

    就是一个onnewwindow事件不好做
      

  2.   


    如果创造一个新的进程且不用onnewwindow,那么点开新链接就会自动打开IE
      

  3.   

    不对,IE也是多窗口浏览器,如果不是点图标再打开一个IE,所有窗口在同一进程procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
      Form1:=TForm1.Create(Application);
      Form1.Show;
      ppDisp:=Form1.WebBrowser1.ControlInterface;
    end;试试,这就可以了~~~
      

  4.   

    问题2:http://www.euromind.com/iedelphi/urlhistory.htm
    http://www.euromind.com/iedelphi/上有很多现成控件可供学习
      

  5.   

    对不起,我比较菜,如果用Create(Application)那么打开的新页面的在任务栏的显示不能用CreateParams来实现吧?那怎么办呢?
      

  6.   

    Params.ExStyle := Params.ExStyle Or WS_EX_APPWINDOW;
    好象也不行
      

  7.   

    StartNewBrowserWindow('http://www.borland.com');
      

  8.   

    完整的代码 
    uses  DdeMan,
    {$IFDEF WIN32}
      Registry; {We will get it from the registry}
    {$ELSE}
      IniFiles; {We will get it from the win.ini file}
    {$ENDIF}
    {$IFNDEF WIN32}
      const MAX_PATH = 144;
    {$ENDIF}
    function GetProgramAssociation (Ext : string) : string;
    var
    {$IFDEF WIN32}
      reg: TRegistry;
      s : string;
    {$ELSE}
      WinIni : TIniFile;
      WinIniFileName : array[0..MAX_PATH] of char;
      s : string;
    {$ENDIF}
    begin
    {$IFDEF WIN32}
      s := '';
      reg := TRegistry.Create;
      reg.RootKey := HKEY_CLASSES_ROOT;
      if reg.OpenKey('.' + ext + '\shell\open\command',
                     false) <> false then begin
      {The open command has been found}
        s := reg.ReadString('');
        reg.CloseKey;
      end else begin
      {perhaps thier is a system file pointer}
        if reg.OpenKey('.' + ext,
                       false) <> false then begin
          s := reg.ReadString('');
          reg.CloseKey;
          if s <> '' then begin
         {A system file pointer was found}
            if reg.OpenKey(s + '\shell\open\command',
                           false) <> false then
         {The open command has been found}
              s := reg.ReadString('');
            reg.CloseKey;
          end;
        end;
      end;
     {Delete any command line, quotes and spaces}
      if Pos('%', s) > 0 then
        Delete(s, Pos('%', s), length(s));
      if ((length(s) > 0) and
          (s[1] = '"')) then
        Delete(s, 1, 1);
      if ((length(s) > 0) and
          (pos('"', s) > 0)) then
        Delete(s, pos('"', s), Length(s));
      while ((length(s) > 0) and
             (s[length(s)] = #32)) do
        Delete(s, Length(s), 1);
    {$ELSE}
      GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName));
      StrCat(WinIniFileName, '\win.ini');
      WinIni := TIniFile.Create(WinIniFileName);
      s := WinIni.ReadString('Extensions',
                              ext,
                              '');
      WinIni.Free;
     {Delete any command line}
      if Pos(' ^', s) > 0 then
        Delete(s, Pos(' ^', s), length(s));
     {$ENDIF}
      result := s;
    end;procedure StartNewBrowserWindow(URL : string);
    var
      DDEConv : TDDEClientConv;
      URLFired : bool;
      App : string;
      UpApp : string;
      p : array[0..MAX_PATH] of char;
    begin
      UrlFired := false;
      App := GetProgramAssociation('HTM');
      UpApp := Uppercase(App);
      Delete(App, Pos('.EXE', UpAPP), length(App));
      if Pos('NETSCAPE.EXE',
             UpApp) > 0 then begin
        DDEConv:=TDDEClientConv.Create(nil);
        DDEConv.ServiceApplication := App;
        if DDEConv.SetLink('NETSCAPE' , 'WWW_OpenURL') then
          if DDEConv.RequestData(URL +
                                 ',,0x0,0x0') <> nil then
            if DDEConv.SetLink('NETSCAPE', 'WWW_Activate') then
              URLFired := DDEConv.RequestData('0xFFFFFFFF,0x0') <> nil;
        DDEConv.Free;
      end else
      if Pos('IEXPLORE.EXE',
             UpApp) > 0 then begin
        DDEConv:=TDDEClientConv.Create(nil);
        DDEConv.ServiceApplication := App;
        if DDEConv.SetLink('iexplore', 'WWW_OpenURL') then
          if DDEConv.RequestData(URL + ',,0') <> nil then
            if DDEConv.SetLink('iexplore', 'WWW_Activate') then
              URLFired := DDEConv.RequestData('0,0') <> nil;
        DDEConv.Free;
      end;
      if UrlFired = false then
        WinExec(StrPCopy(@p, URL), SW_SHOWNORMAL);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      StartNewBrowserWindow('http://www.borland.com');
      StartNewBrowserWindow('http://www.yahoo.com');
    end;