怎样获得回收站的路径?(100分)

L

lhq456

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎样取得当前OS的回收站所在的路径,或者,谁知道怎样获取回收站(所有文件)的大小?
 
回收站肯定是在某个分驱的根目录下啊。
 
回收站在每个盘的Recycled目录下,这个目录是隐藏属性的。
 
从别处抄过来的,看看
uses
ShlObj, ActiveX, ComObj;

function GetSpecialFolderDir(mFolder: Integer): string;
{ 返回获取系统文件或系统目录 }
(*
CSIDL_BITBUCKET * 回收站
CSIDL_CONTROLS * 控制面板
CSIDL_DESKTOP * 桌面
CSIDL_DESKTOPDIRECTORY 桌面目录 //如C:/WINDOWS/Desktop
CSIDL_DRIVES * 我的电脑
CSIDL_FONTS 字体 //如C:/WINDOWS/FONTS
CSIDL_NETHOOD 网上邻居目录 //如C:/WINDOWS/NetHood
CSIDL_NETWORK * 网上邻居
CSIDL_PERSONAL 我的文档 //如C:/My Documents
CSIDL_PRINTERS * 打印机
CSIDL_PROGRAMS 程序组 //如C:/WINDOWS/Start Menu/Programs
CSIDL_RECENT 最近文档 //如C:/WINDOWS/Recent
CSIDL_SENDTO 发送到 //如C:/WINDOWS/SentTo
CSIDL_STARTMENU 开始菜单 //如C:/WINDOWS/Start Menu
CSIDL_STARTUP 启动 //如C:/WINDOWS/启动
CSIDL_TEMPLATES 模版 //如C:/WINDOWS/ShellNew
*)
var
vItemIDList: PItemIDList;
vBuffer: array[0..MAX_PATH] of Char;
begin
SHGetSpecialFolderLocation(0, mFolder, vItemIDList);
SHGetPathFromIDList(vItemIDList, vBuffer); //转换成文件系统的路径
Result := vBuffer;
end; { GetSpecialFolderDir }

function CreateShellLink(mPath: string; mWorkingDirectory: string;
mFileName: WideString): Boolean; { 返回创建快捷方式是否成功 }
var
vShellLink: IShellLink;
vPersistFile: IPersistFile;
vUnKnown: IUnKnown;
begin
Result := True;
try
vUnKnown := CreateComObject(CLSID_ShellLink);
vShellLink := vUnKnown as IShellLink;
vPersistFile := vUnKnown as IPersistFile;
vShellLink.SetPath(PChar(mPath));
vShellLink.SetWorkingDirectory(PChar(mWorkingDirectory));
vPersistFile.Save(PWChar(mFileName), False);
except
Result := False;
end;
end; { CreateShellLink }
///////End Source

///////Begin Demo
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateShellLink(ParamStr(0), ExtractFilePath(ParamStr(0)),
GetSpecialFolderDir(CSIDL_DESKTOPDIRECTORY) + '/' +
ChangeFileExt(ExtractFileName(ParamStr(0)), '.lnk'));
end;
///////End Demo

 
对不起,我知道上面的方法,但是我在Win2000下测试,程序无法返回正确的回收站路径。
如果在98下那么回收站的路径应该是X:/Recycled,而在Win2000下就成了X:/Recycler,我
只是想知道是否有一种可靠的办法取得回收站的路径,谢谢大家!
 
我也强烈关注~~~~~~~~~~~
 
你判断一下是在什么系统下工作的好了。
 
我现在也碰到这个问题了,那位朋友解决过的请说一说。
 

Similar threads

回复
0
查看
859
不得闲
回复
0
查看
738
不得闲
D
回复
0
查看
761
DelphiTeacher的专栏
D
D
回复
0
查看
739
DelphiTeacher的专栏
D
顶部