當然是利用Api函數,現在我介紹兩個Api函數,利用他們就可以輕松簡單的獲取這些特殊系統目錄。
Function SHGetSpecialFolderLocation(hwndOwner: HWND; nFolder: Integer;
var ppidl: PItemIDList): HResult; stdcall;
Function SHGetPathFromIDList(pidl: PItemIDList; pszPath: PChar): BOOL;stdcall;
其中由nFolder參數指定的就是各個特殊系統目錄:
CSIDL_DESKTOP:毫無疑問這就是桌面;
CSIDL_DRIVERS:我的電腦;
CSIDL_FAVORITES:收藏夾;
CSIDL_STARTUP:開始菜單;
CSIDL_NETWORK:網上鄰居;
還有很多,你可以查閱一下Delphi的Win32 Api函數的幫助文件,不過在幫助文件下的這些參數也不是很全,像收藏夾幫助文件裡面就沒有,你可以查閱一下它的頭文件:shlobj.pas。
下面我就利用這兩個函數取得桌面的路徑(在win98和win2000下都可以使用):
uses shlobj;
var
pitem:PITEMIDLIST;
s:string;
begin
shGetSpecialFolderLocation(handle,CSIDL_DESKTOP,pitem);
setlength(s,100);
shGetPathFromIDList(pitem,pchar(s));
end;
在字符串s中存儲的就是桌面的路徑值。簡單吧!就是這麼簡單,但要是你不知道,你就得繞一個大圈子。