我曾经做过的一个程序,可以浏览所有文件,并把它们放在TreeView中,如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TreeView1.Items.Clear();
  WriteToView(Edit1.text,nil);
end;procedure TForm1.WriteToView(strName :string; curTreeNode :TTreeNode);
var
  FName:THANDLE;
  strTemp :string;
  ss :WIN32_FIND_DATA;
  MyTreeNode: TTreeNode;
begin
  MyTreeNode := TreeView1.Items.AddChild(curTreeNode,strName);  FName :=FindFirstFile(PChar(strName),ss);
  if FName <>INVALID_HANDLE_VALUE then begin
    strTemp:=string(ss.cFileName);
    if strTemp[1] <>'.' then begin
      if ss.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then begin
        delete(strName,length(strName)-2,3);
        WriteToView(strName +strTemp+'\*.*',MyTreeNode);
        strName :=strName +'*.*';
        end
      else TreeView1.Items.AddChild(MyTreeNode,strTemp);
      end;
    end  else exit;  while FindNextFile(FName,ss)do begin
    strTemp :=string(ss.cFileName);
    if strTemp[1] <>'.' then begin
      if ss.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then begin
        delete(strName,length(strName)-2,3);
        WriteToView(strName +strTemp+'\*.*',MyTreeNode);
        strName :=strName +'*.*';
        end
      else TreeView1.Items.AddChild(MyTreeNode,strTemp);
      end;
   end;
end;这里,用Edit1输入文件夹的名称和所需要的类型,如果是所有文件,如你所说的,可以写入如下:
  C:\Windows\Temporary Internet Files\*.*
即可。我想,在线层中使用也应该是可以的,你可以试试看,如果有问题,告诉我。
 WirteToView(....)自己定义。

解决方案 »

  1.   

    如果我想把这些文件按其internet地址分类而不是文件夹分类,又该怎么做呢?
      

  2.   

     我还想知道呢,问题弄出来了,别忘记给我一份 [email protected]
      

  3.   

    好像在C:\Windows\Temporary Internet Files\Content.IE5\index.dat
    里有所有的地址,可是应该用什么来打开它呢?
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls, StdCtrls,shellapi,shdocvw,shlObj,wininet,mshtml, ExtCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Button4: TButton;
        Panel2: TPanel;
        ListBox2: TListBox;
        ListBox1: TListBox;
        Splitter1: TSplitter;
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}const TempInternet: string = 'C:\WINDOWS\Temporary Internet Files\Content.IE5\7BZR3LYA\';
    //NT : TempInternet: string = '....';procedure TForm1.Button4Click(Sender: TObject);
    var
      FirstCacheHandle: THandle;
      PFirstCacheEntryInfo,PNextCacheEntryInfo: PInternetCacheEntryInfoA;
      FirstCacheEntryInfo,NextCacheEntryInfo: TInternetCacheEntryInfoA;
      FirstCacheEntryInfoBufferSize,NextCacheEntryInfoBufferSize: Dword;
      HaveItem :Boolean;
    begin
      HaveItem := True;
      FirstCacheEntryInfoBufferSize := 0;
      NextCacheEntryInfoBufferSize := 0;
      FirstCacheEntryInfo.dwStructSize := FirstCacheEntryInfoBufferSize;
      NextCacheEntryInfo.dwStructSize := NextCacheEntryInfoBufferSize;
      GetMem(PFirstCacheEntryInfo,sizeof(TInternetCacheEntryInfoA));
      GetMem(PNextCacheEntryInfo,sizeof(TInternetCacheEntryInfoA));
      //Dispose(PNextCacheEntryInfo);
      PFirstCacheEntryInfo^.dwStructSize := sizeof(TInternetCacheEntryInfoA);
      PNextCacheEntryInfo^.dwStructSize := sizeof(TInternetCacheEntryInfoA);
      FirstCacheHandle := 0;
       while FirstCacheHandle=0 do
        begin
          FirstCacheHandle :=FindFirstUrlCacheEntryEx
            ('',0,URLCACHE_FIND_DEFAULT_FILTER
            ,0,PFirstCacheEntryInfo,@FirstCacheEntryInfoBufferSize,nil,nil,nil);
          if FirstCacheHandle =0 then
           begin
            //Freemem(PFirstCacheEntryInfo);
            case GetLastError of
            ERROR_NO_MORE_ITEMS :
              begin
                FindCloseUrlCache(FirstCacheHandle);
                FreeMem(PFirstCacheEntryInfo);
                Break;
              end;
            ERROR_INSUFFICIENT_BUFFER :
              begin
              FreeMem(PFirstCacheEntryInfo);
              GetMem(PFirstCacheEntryInfo,FirstCacheEntryInfoBufferSize);
              PFirstCacheEntryInfo^.dwStructSize := FirstCacheEntryInfoBufferSize;
              continue;
              end;
            else
              begin
              showmessage('Can not Press Cache!');
              Break;
              end;
            end;
          end;
        end ;
      try
      while HaveItem=true do
      begin
         if not (FindNextUrlCacheEntryEx(FirstCacheHandle,PNextCacheEntryInfo,
         @NextCacheEntryInfoBufferSize,nil,nil,nil)) then
         begin
           //FreeMem(PNextCacheEntryInfo);
           case GetLastError of
             ERROR_NO_MORE_ITEMS :
               begin
               FindCloseUrlCache(FirstCacheHandle);
               HaveItem :=false;
               continue;
               end;
             ERROR_INSUFFICIENT_BUFFER :
               begin
               FreeMem(PNextCacheEntryInfo);
               GetMem(PNextCacheEntryInfo,NextCacheEntryInfoBufferSize);
               PNextCacheEntryInfo^.dwStructSize := NextCacheEntryInfoBufferSize;
               continue;
               end;
           else
             begin
               FreeMem(PNextCacheEntryInfo);
               showmessage('Error');
               Break;
             end;
           end;
         end
         else
           begin
           Listbox1.items.add(strpas(PNextCacheEntryInfo^.lpszSourceUrlName));
           Listbox2.items.add(strpas(PNextCacheEntryInfo^.lpszLocalFileName));
           end;
      end;
      except
      end;
      //freemem(PFirstCacheEntryInfo);
      //freemem(PNextCacheEntryInfo);
      //Dispose(PFirstCacheEntryInfo);
    end;end.
    以前做的,你可以改一下。
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls, StdCtrls,shellapi,shdocvw,shlObj,wininet,mshtml, ExtCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Button4: TButton;
        Panel2: TPanel;
        ListBox2: TListBox;
        ListBox1: TListBox;
        Splitter1: TSplitter;
        procedure Button4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}const TempInternet: string = 'C:\WINDOWS\Temporary Internet Files\Content.IE5\7BZR3LYA\';
    //NT : TempInternet: string = '....';procedure TForm1.Button4Click(Sender: TObject);
    var
      FirstCacheHandle: THandle;
      PFirstCacheEntryInfo,PNextCacheEntryInfo: PInternetCacheEntryInfoA;
      FirstCacheEntryInfo,NextCacheEntryInfo: TInternetCacheEntryInfoA;
      FirstCacheEntryInfoBufferSize,NextCacheEntryInfoBufferSize: Dword;
      HaveItem :Boolean;
    begin
      HaveItem := True;
      FirstCacheEntryInfoBufferSize := 0;
      NextCacheEntryInfoBufferSize := 0;
      FirstCacheEntryInfo.dwStructSize := FirstCacheEntryInfoBufferSize;
      NextCacheEntryInfo.dwStructSize := NextCacheEntryInfoBufferSize;
      GetMem(PFirstCacheEntryInfo,sizeof(TInternetCacheEntryInfoA));
      GetMem(PNextCacheEntryInfo,sizeof(TInternetCacheEntryInfoA));
      //Dispose(PNextCacheEntryInfo);
      PFirstCacheEntryInfo^.dwStructSize := sizeof(TInternetCacheEntryInfoA);
      PNextCacheEntryInfo^.dwStructSize := sizeof(TInternetCacheEntryInfoA);
      FirstCacheHandle := 0;
       while FirstCacheHandle=0 do
        begin
          FirstCacheHandle :=FindFirstUrlCacheEntryEx
            ('',0,URLCACHE_FIND_DEFAULT_FILTER
            ,0,PFirstCacheEntryInfo,@FirstCacheEntryInfoBufferSize,nil,nil,nil);
          if FirstCacheHandle =0 then
           begin
            //Freemem(PFirstCacheEntryInfo);
            case GetLastError of
            ERROR_NO_MORE_ITEMS :
              begin
                FindCloseUrlCache(FirstCacheHandle);
                FreeMem(PFirstCacheEntryInfo);
                Break;
              end;
            ERROR_INSUFFICIENT_BUFFER :
              begin
              FreeMem(PFirstCacheEntryInfo);
              GetMem(PFirstCacheEntryInfo,FirstCacheEntryInfoBufferSize);
              PFirstCacheEntryInfo^.dwStructSize := FirstCacheEntryInfoBufferSize;
              continue;
              end;
            else
              begin
              showmessage('Can not Press Cache!');
              Break;
              end;
            end;
          end;
        end ;
      try
      while HaveItem=true do
      begin
         if not (FindNextUrlCacheEntryEx(FirstCacheHandle,PNextCacheEntryInfo,
         @NextCacheEntryInfoBufferSize,nil,nil,nil)) then
         begin
           //FreeMem(PNextCacheEntryInfo);
           case GetLastError of
             ERROR_NO_MORE_ITEMS :
               begin
               FindCloseUrlCache(FirstCacheHandle);
               HaveItem :=false;
               continue;
               end;
             ERROR_INSUFFICIENT_BUFFER :
               begin
               FreeMem(PNextCacheEntryInfo);
               GetMem(PNextCacheEntryInfo,NextCacheEntryInfoBufferSize);
               PNextCacheEntryInfo^.dwStructSize := NextCacheEntryInfoBufferSize;
               continue;
               end;
           else
             begin
               FreeMem(PNextCacheEntryInfo);
               showmessage('Error');
               Break;
             end;
           end;
         end
         else
           begin
           Listbox1.items.add(strpas(PNextCacheEntryInfo^.lpszSourceUrlName));
           Listbox2.items.add(strpas(PNextCacheEntryInfo^.lpszLocalFileName));
           end;
      end;
      except
      end;
      //freemem(PFirstCacheEntryInfo);
      //freemem(PNextCacheEntryInfo);
      //Dispose(PFirstCacheEntryInfo);
    end;end.
    以前做的,可以改一下