如何得到桌面文件所在的路径?包括98,2000

解决方案 »

  1.   

    var
      P: PChar;
      S: String;
    begin
      GetMem(P,MAX_PATH);
      GetWindowsDirectory(P,MAX_PATH);
      S := P;
      FreeMem(P);
      S := S + '\Desktop';
      ShowMessage(S);
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    lxpbuaa(桂枝香在故国晚秋):你的只能得到98的吧?!有没有其他的方式?
    不同的系统,桌面文件的存放的路径不一样的吧!NT和2000,98,xp
      

  3.   

    方法一:通过访问注册表
    uses registry;
    procedure Tsysdirfrm.FormShow(Sender: TObject);
    var reg:Tregistry;
    begin
    reg:=Tregistry.create;
    reg.RootKey:=HKEY_USERS;
    reg.OpenKey('\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',false);
    listbox1.items.add(reg.readstring('Desktop')) ;//桌面目录
    listbox1.items.add(reg.readstring('Fonts'));//字体目录
    listbox1.items.add(reg.readstring('NetHood')) ;//网上邻居 
    listbox1.items.add(reg.readstring('Personal'));//我的文档目录
    listbox1.items.add(reg.readstring('Programs'));//开始菜单程序目录
    listbox1.items.add(reg.readstring('Recent')) ;//存放用户最近访问文件快捷方式的目录
    listbox1.items.add(reg.readstring('SendTo'));//发送到目录
    listbox1.items.add(reg.readstring('Start Menu'));//开始菜单目录
    listbox1.items.add(reg.readstring('Startup'));//开始菜单启动项目录
    listbox1.items.add(reg.readstring('Favorites')) ;//收藏夹目录
    listbox1.items.add(reg.readstring('History'));//网页历史目录
    listbox1.items.add(reg.readstring('Cookies'));//cookies目录
    listbox1.items.add(reg.readstring('Cache')) ;//缓存目录
    listbox1.items.add(reg.readstring('AppData'));//应用程序数据目录
    listbox1.items.add(reg.readstring('PrintHood')) ;//打印目录
    reg.CloseKey ;
    reg.free;
    end;方法二:使用API函数SHGetSpecialFolderLocation和SHGetPathFromIDList
    uses shlobj;
    procedure TForm1.Button1Click(Sender: TObject);
    var pidl: PItemIDList;
    FavPath: array[0..MAX_PATH] of char;
    temp:array [1..17] of integer; i:byte;
    begintemp[1]:=CSIDL_DESKTOP; //桌面
    temp[2]:=CSIDL_DESKTOPDIRECTORY ; //桌面目录
    temp[3]:=CSIDL_FONTS ; //字体目录
    temp[4]:=CSIDL_NETHOOD ; //网络邻居
    temp[5]:=CSIDL_PERSONAL ; //我的文档目录
    temp[6]:=CSIDL_PROGRAMS ; //开始菜单程序目录
    temp[7]:=CSIDL_RECENT ; //存放用户最近访问文件快捷方式的目录
    temp[8]:=CSIDL_SENDTO ; //"发送到"目录
    temp[9]:=CSIDL_STARTMENU ; //开始菜单目录
    temp[10]:=CSIDL_STARTUP ; //开始菜单启动项目录
    temp[11]:=CSIDL_FAVORITES ; //收藏夹目录
    for i:=1 to 17 do
    begin
    SHGetSpecialFolderLocation(Handle, temp[i], pidl);
    SHGetPathFromIDList(pidl, favpath);
    listbox1.Items.Add(StrPas(FavPath));
    end;
    end;
      

  4.   

    有一个专门的API可以获得这些特殊目录