如何得到desktop, my computer等虚拟目录的guid?(88分)

Q

qevan

Unregistered / Unconfirmed
GUEST, unregistred user!
最好有实例。
 
re一把,
本文在csdn也问了,但就是没人回答,
 
在 ShlObj 单元,自己去看。所有 CSIDL 开头的,共 35 个。
 
干脆让你看仔细了:
-------------------------------------------------------------------------------
uses ShlObj;

procedure TForm1.Button1Click(Sender: TObject);
const
Folder:array[0..34] of string=('CSIDL_DESKTOP',
'CSIDL_INTERNET',
'CSIDL_PROGRAMS',
'CSIDL_CONTROLS',
'CSIDL_PRINTERS',
'CSIDL_PERSONAL',
'CSIDL_FAVORITES',
'CSIDL_STARTUP',
'CSIDL_RECENT',
'CSIDL_SENDTO',
'CSIDL_BITBUCKET',
'CSIDL_STARTMENU',
'nil-13','nil-14','nil-15','nil-16',
'CSIDL_DESKTOPDIRECTORY',
'CSIDL_DRIVES',
'CSIDL_NETWORK',
'CSIDL_NETHOOD',
'CSIDL_FONTS',
'CSIDL_TEMPLATES',
'CSIDL_COMMON_STARTMENU',
'CSIDL_COMMON_PROGRAMS',
'CSIDL_COMMON_STARTUP',
'CSIDL_COMMON_DESKTOPDIRECTORY',
'CSIDL_APPDATA',
'CSIDL_PRINTHOOD',
'CSIDL_ALTSTARTUP','nil-30',
'CSIDL_COMMON_ALTSTARTUP',
'CSIDL_COMMON_FAVORITES',
'CSIDL_INTERNET_CACHE',
'CSIDL_COOKIES',
'CSIDL_HISTORY');
var
PIIDList:pItemIDList;
PPath:array[0..255]of Char;
i:integer;
begin
for i:=0 to 34 do
begin
ZeroMemory(@PPath,256);
SHGetSpecialFolderLocation(self.Handle,i,PIIDList);
SHGetPathFromIDList(PIIDList,@PPath);
Memo1.Lines.Add(Folder+' : '+StrPas(@PPath));
end;
end;
 
谢谢,但我要的不是这个。
我想得到特殊目录的guid,
eg:{208D2C60-3AEA-1069-A2D7-08002B30309D}网上邻居
{20D04FE0-3AEA-1069-A2D8-08002B30309D}我的电脑
如何得到上面的guid?
比如通过 CSIDL 开头的那35个常量得到对应的guid.

 
CLSID_NetworkPlaces:TGUID={'208D2C60-3AEA-1069-A2D7-08002B30309D'};
CLSID_NetworkDomain:TGUID={'46e06680-4bf0-11d1-83ee-00a0c90dc849'};
CLSID_NetworkServer:TGUID={'c0542a90-4bf0-11d1-83ee-00a0c90dc849'};
CLSID_NetworkShare:TGUID={'54a754c0-4bf1-11d1-83ee-00a0c90dc849'};
CLSID_MyComputer:TGUID={'20D04FE0-3AEA-1069-A2D8-08002B30309D'};
CLSID_Internet:TGUID={'871C5380-42A0-1069-A2EA-08002B30309D'};
CLSID_ShellFSFolder:TGUID={'F3364BA0-65B9-11CE-A9BA-00AA004AE837'};
CLSID_RecycleBin:TGUID={'645FF040-5081-101B-9F08-00AA002F954E'};
CLSID_ControlPanel:TGUID={'21EC2020-3AEA-1069-A2DD-08002B30309D'};
CLSID_MyDocuments:TGUID={'450D8FBA-AD25-11D0-98A8-0800361B1103'};
CLSID_ShellDesktop:TGUID={'00021400-0000-0000-C000-000000000046'};
CLSID_ShellLink:TGUID={'00021401-0000-0000-C000-000000000046'};
 
看不清谁是谁的话,一个简单的办法是在桌面上新建一个文件夹,然后重命名时代入 GUID:
例如:把一个文件夹重命名为 X.{645FF040-5081-101B-9F08-00AA002F954E} ,就可以知道
这个 GUID 代表谁了。(本例是回收站)
 
多谢小雨哥,!
我想请问这些是从那得到的?查注册表除外。
另外这些guid每台机器的都一样么,win98/xp各种windows系统都一样么?

还有就是,那个 X.{645FF040-5081-101B-9F08-00AA002F954E}命名文件夹就成了系统文件夹,是怎么回事?
谢谢!
 
1.我想请问这些是从那得到的?查注册表除外。—— Microsoft MSDN
2.另外这些guid每台机器的都一样么,win98/xp各种windows系统都一样么?—— 一样
3.还有就是,那个 X...命名文件夹就成了系统文件夹,是怎么回事?—— 即你所谓的实例
 
找不到阿,能否把连接给我
 
结贴吧!
 

Similar threads

回复
0
查看
684
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部