100?高分
目录中findfirst做递归
INI格式读取收藏家文件  到2个TSTRINGLIST
生成到动态菜单。

解决方案 »

  1.   

    先在注册表中找到Favorites目录所有位置(WINDOWS98和NT不是一样的),然后在该目录中查找所有的URL文件,其内容格式如下
    [InternetShortcut]
    URL=http://www.yes-xxx.com/
    Modified=C0D16FDBC9FBBF015F
    名称按文件名,URL地址就是其中内容
      

  2.   

    TMENU的POP事件中完成上述过程,名字为菜单名,菜单HINT为URL地址,点击后引用HINT就可以了
      

  3.   

    alin  能不能提供原代码  
      

  4.   

    //创建菜单
    procedure Tfrm_MainForm.FindWebFavorites;
    var
      WindowDirChar:Array[0..MAX_PATH] of Char;
      WindowDir :String;
    Begin
      GetWindowsDirectory(WindowDirChar,MAX_PATH);  //我这里取的系统目录,准确的应在注册表中取得
      WindowDir :=StrPas(WindowDirChar);
      if WindowDir[Length(WindowDir)]<>'\' then WindowDir :=WindowDir +'\';
      WindowDir :=WindowDir +'Favorites';
      FavoritesMenuItem.Clear;  //菜单
      CreateFavoritesMenu(WindowDir,FavoritesMenuItem);
    End;//读取URL文件内容
    function Tfrm_MainForm.GetUrlFileURL(FilePath,FileName:String):String;
    Var
      IniFile:TIniFile;
    Begin
      IniFile:=TIniFile.Create(FilePath+'\'+FileName);
      Result :=IniFile.ReadString('InternetShortcut','URL','about:blank');
      IniFile.Free;
    End;//以下是递归取得收藏的所有目录和URL
    procedure Tfrm_MainForm.CreateFavoritesMenu(Const WorkDir:String;Var MenuItem:TMenuItem);
    Var
      SearchRec:TSearchRec;
      FWorkDir:String;
      SubMenuItem:TMenuItem;
    begin
      FWorkDir :=WorkDir;
      if (FindFirst(FWorkDir +'\*.*', faDirectory,SearchRec)=0) then
      begin
        repeat
          if (SearchRec.Attr and faDirectory = faDirectory) then
          Begin
            if (SearchRec.Name <>'.')and (SearchRec.Name <>'..') then
            begin
              SubMenuItem:=TMenuItem.Create(Self);
              SubMenuItem.Caption :=SearchRec.Name;
              MenuItem.Add(SubMenuItem);  //子目录
              CreateFavoritesMenu(FWorkDir+'\'+SearchRec.Name,SubMenuItem);
            end;
          end;
        until FindNext(SearchRec) <> 0;
      End;
      FindClose(SearchRec);  if (FindFirst(FWorkDir +'\*.*', faDirectory,SearchRec)=0) then
      begin
        repeat
          if (SearchRec.Attr and faDirectory <> faDirectory) then
          Begin
            SubMenuItem:=TMenuItem.Create(MenuItem);
            SubMenuItem.Caption :=Copy(SearchRec.Name,1,Length(SearchRec.Name)-4);
            if Length(SubMenuItem.Caption) >25 then
              SubMenuItem.Caption :=Copy(SubMenuItem.Caption,1,25)+'...';
            SubMenuItem.Hint :=GetUrlFileURL(FWorkDir,SearchRec.Name);
            SubMenuItem.OnClick :=MenuItem_FaClick;
            MenuItem.Add(SubMenuItem);
          end;
        until FindNext(SearchRec) <> 0;
      End;
      FindClose(SearchRec);End;
    //菜单单击事件处理
    procedure Tfrm_MainForm.MenuItem_FaClick(Sender: TObject);
    begin
    //  if ActiveMDIChild = nil then
    //    Action_NewExecute(nil);
    //  Tfrm_Explorer(WindowList.Items[GetChildFormListNumber(ActiveMDIChild.Tag)]).
      WebBrowser.Navigate((Sender As TMenuItem).Hint);
    end;
      

  5.   

    用alin的方法建立文件,放到c:\windows\Favorites 下面就可以了