如何象调用“在新窗口中打开”一样用IE来打开网页WebBrowserk中所显示的网页。

解决方案 »

  1.   

    直接用shellexecute打开网页,就会自动打开IE
      

  2.   

    转贴:启动浏览器,显示URL在新窗口中
    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;
      

  3.   

    假如你要打开bbs.china.com这个网站。 
    那么
      ShellExecute(0, 'Open', 'http://bbs.china.com' , nil, nil, sw_shownormal) ;
    注意,在uses中请加入ShellApi
      

  4.   

    楼上的各位朋友,不好意思!可能是我没有表达清楚问题。我的实际问题是:我用WebBrowse控件来显示网页,但是现在却遇到一个新的问题,当我点击WebBrowse控件中所显示的网页的任一个链接时,它都不会调用IE来打开,而是用WebBrowse控件来打开。请教大家,应如何解决。
      

  5.   

    处理NewWindow2事件
    参考http://www.euromind.com/iedelphi/embeddedwb/onnewwindow.htm
      

  6.   

    你点链接的时候按住Shit键就可以了。