应该是把已下载到本地的HTML(XML)格式文件保存为文本文件。
只要解析找到IE的存放地点和文件名就可以办到了。

解决方案 »

  1.   

    以下是一篇读取IE收藏夹内网址的信息的代码:procedure TForm1.ToolButton1Click(Sender: TObject);
    label Write;
    var
     Favorites:String;
     Search:TSearchRec;
    begin
     Favorites:=GetFavoritesPath;
     if Favorites='' then
      begin
      MessageBox(Handle,'访问收藏夹主键错误!','提示信息',MB_OK);
      exit;
      end;
     Memo1.Clear;
     with Search,Memo1.Lines do
     begin
      if FindFirst(Favorites+'*.url',0,Search)=0 then
      begin
      Write:
      Add(GetFavoritesUrl(Favorites+Name));
      SetLength(Name,Length(Name)-4);
      Add(Name);
      if FindNext(Search)=0 then
      goto Write;
      end;
     end;
    end;
     
    function TForm1.GetFavoritesPath:String;
    var
     reg:TRegistry;
    begin
     Result:='';
     reg:=TRegistry.Create;
     with reg do
     begin
      RootKey:=HKEY_USERS;
      if OpenKey('.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders',false)=true then
      Result:=ReadString('Favorites')+'\';
      CloseKey;
      Free;
     end;
    end;{function TForm1.GetFavoritesUrl(FavoritesFile: String): String;
    begin
     with TIniFile.Create(FavoritesFile)do
     begin
      Result:=ReadString('InternetShortcut','URL','');
      Free;
     end;
    end;}
     
    function TForm1.GetFavoritesUrl(FavoritesFile: String): String;
    var
     i:integer;
    begin
     Result:='';
     with TStringList.Create do
     begin
      LoadFromFile(FavoritesFile);
      i:=IndexOf('[InternetShortcut]');
      if i=-1 then
      exit;
      Result:=Strings[i+1];
      System.Delete(Result,1,4);
      Free;
     end;
    end; 
      

  2.   

    我不要收藏夹!就算是知道Temporary Internet Files的哪个文件也可以!
      

  3.   

    给你个Email: [email protected]
      

  4.   

    这涉及到IE的编程接口,
    IE6好像做了好多编程扩展,
    比如说 在IE6里把鼠标移到大个图片上就会出现一个工具栏.
    MSDN里应该有相关说明,不过会是C++描述的,新的api被不被支持也很难说.
      

  5.   

    关于获取IE的url中的地址我可以帮你
    使用dde技术
    uses ddeman;
    var
      dde:TDDEClientConv;
    begin
      dde:=TDDEClientConv.create(self);
      if dde.setlink('Iexplore','WWW_GetWindowInfo') then
        edit1.text:=dde.requestdata('0xffffffff,sURL,sTitle')
      else
       showmessage('explore is not running');
    end;
      

  6.   

    提供一个建议:1、建立IShellWindows的实例
    2、通过这个实例得到当前所有的IWebBrowser2接口。得到IWebBrowser2接口后再直接读它的源代码最后再保存就可以了。具体查看一下已解决问题部分,我记得有过这方面的问题。
      

  7.   

    TO: naughtyboy(淘气男孩)
    一个窗口可以,可是多个IE呢?我怎么知道他是哪个?
      

  8.   

    不会吧,不就是一个简单的抓html代码的代码吗,谈的那么复杂干吗
      

  9.   

    TO: anggogo(angGoGo) 
    怎么抓!我的意思是,不用二次下载!浏览器下载一次就够了!
      

  10.   

    我觉得可以这样做:    做一个Delphi程序,里面可以显示当前所有打开的IE窗口,然后给他们发送一个“点击了弹出菜单里的查看源代码的消息“,这个消息的定义我觉得在MSDN里应该能找到(我一会去试试看),然后再捕获弹出的记事本窗体的句柄(应该不难吧?),再对这个窗体发送保存到某个地方(可以在DELPHI的程序里写好)的消息和退出消息,这样是不是就OK了?    里面最难的应该就是发送给IE的那个消息了,找找看吧,应该可以找到的:)    希望能对你和大家的思路有帮助:)如果有更简单的我当然也愿意洗耳恭听了!
      

  11.   

    我知道你的意思.我说 编程接口 的意思是说,应当把这个"软件"集成到ie里,
    就像ie6里自动出现的保存图片的工具栏一样,这样才有意义嘛.而且单独的程序也很难判断你要的是那个窗口的源文件.其实可以这样实现,通过在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt上添加键值,做ie的右键菜单关连扩展,在写一个脚本,用vbscript,javascript都可以,把document对象保存就可以了.文件名可以用html的title,目录就需要你自己指定了.
    其实flashget,netants提供的右键菜单里的 用...下载全部连接 就是用的这种方法.如果你装了flashget你可以到注册表里看看,还有flashget安装目录下
    的jc_link.htm和jc_call.htm 
    这个方法其实是m$在platformSDK里说得,好像是shellextention吧.
      

  12.   

    你如果能找到当前显示的是哪个WebBrowser
    那么可以用IHTMLDocument2来实现
    这是微软的接口还可以这么做procedure TForm1.Button2Click(Sender: TObject);
    var
      doc:OleVariant;
    begin
    doc:=webbrowser1.Document;
    showmessage(doc.all.item(1).outerHTML);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    webbrowser1.Navigate('http://');
    end;道理是一样的
      

  13.   

    用WIN32 API 就能实现。扯那么复杂干什么?
      

  14.   

    敢问hjd_cw() 
    用哪个API阿
      

  15.   

    对阿,那位大哥知道有关的ie接口的资料给大家一点提示,链接!
    大家一齐进步阿!
    netscape的homepage里有plugin 教程,可能有点用处,
    csdn的技术文档中也有关于在ie 里加入工具条的文档!
    除此之外我就不知道了!
      

  16.   

    不知道 如下处理 算不算?
    模拟 右键,V
    模拟 Alt+V,C
      

  17.   

    我这有篇资料,只不过是用c++的,涉及到com编程,谁要留下e-mail.
      

  18.   

    TO:dext(德克斯特) 
     皮毛?不会吧?我觉得这么多人说的都有点帮助啊!你没有试过其中的某种方法?
      

  19.   

    在delphi中调用IE的接口试试!!!
      

  20.   

    uses 
      ActiveX; function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean; 
    var 
      ps: IPersistStreamInit; 
      fs: TFileStream; 
      sa: IStream; 
    begin 
      ps := WebBrowser.Document as IPersistStreamInit; 
      fs := TFileStream.Create(FileName, fmCreate); 
      try 
        sa := TStreamAdapter.Create(fs, soReference) as IStream; 
        Result := Succeeded(ps.Save(sa, True)); 
      finally 
        fs.Free; 
      end; 
    end; function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean; 
    var 
      ps: IPersistStreamInit; 
      ss: TStringStream; 
      sa: IStream; 
      s: string; 
    begin 
      ps := WebBrowser.Document as IPersistStreamInit; 
      s := ''; 
      ss := TStringStream.Create(s); 
      try 
        sa := TStreamAdapter.Create(ss, soReference) as IStream; 
        Result := Succeeded(ps.Save(sa, True)); 
        if Result then ACode.Add(ss.Datastring); 
      finally 
        ss.Free; 
      end; 
    end; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      WB_SaveHTMLCode(Webbrowser1, 'c:\test.txt'); 
    end; procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      WB_GetHTMLCode(Webbrowser1, Memo1.Lines); 
    end; 
      

  21.   

    uses 
      ActiveX; function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean; 
    var 
      ps: IPersistStreamInit; 
      fs: TFileStream; 
      sa: IStream; 
    begin 
      ps := WebBrowser.Document as IPersistStreamInit; 
      fs := TFileStream.Create(FileName, fmCreate); 
      try 
        sa := TStreamAdapter.Create(fs, soReference) as IStream; 
        Result := Succeeded(ps.Save(sa, True)); 
      finally 
        fs.Free; 
      end; 
    end; function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean; 
    var 
      ps: IPersistStreamInit; 
      ss: TStringStream; 
      sa: IStream; 
      s: string; 
    begin 
      ps := WebBrowser.Document as IPersistStreamInit; 
      s := ''; 
      ss := TStringStream.Create(s); 
      try 
        sa := TStreamAdapter.Create(ss, soReference) as IStream; 
        Result := Succeeded(ps.Save(sa, True)); 
        if Result then ACode.Add(ss.Datastring); 
      finally 
        ss.Free; 
      end; 
    end; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      WB_SaveHTMLCode(Webbrowser1, 'c:\test.txt'); 
    end; procedure TForm1.Button2Click(Sender: TObject); 
    begin 
      WB_GetHTMLCode(Webbrowser1, Memo1.Lines); 
    end; 
      

  22.   

    结帖总结:问题得到了较好的解决。尤其感谢ChinaOK的帮助!本来可以给他200分,但是,他解决的是在自己的程序里保存WebBrowser和源代码的问题,但不管怎么样,他给我指了一条道路,让我去探索!我给了他100分。(对一般人来说,是个了不起的分数,但对于ChinaOK来说只是皮毛!但我也只能给这么多了,请ChinaOK原谅! @_@)另外还要感谢的是两位斑竹,Windindance和zswang的帮助!虽然他们并没有最终解决问题,但他们的回答让我知道了一个好斑竹的标准——不是不懂装懂,而是说一是一,心直坦诚。给他们一人20分。(对他们来说——就是皮毛)其余的zhengxionghua() ,BCB_FANS(四大名捕之追杀令),naughtyboy(淘气男孩) ,aaronzhang(风不息) 也给了极大的帮助!一人10分!
    剩下的散分!衷心谢谢CSDN的朋友给我的帮助,在这里Dext有礼了!(鞠躬)在无边的网路上有这么多朋友帮忙,是缘分!