如何取得系統(tǒng)中的桌面的路徑
發(fā)布時間:2008-08-09 閱讀數(shù): 次 來源:網(wǎng)樂原科技
我們在編寫程序的時候,經(jīng)常會需要得到系統(tǒng)中的一些特殊目錄,例如:桌面、收藏夾、歷史文件、字體等。在windows98、windows NT、windows 2000中他們的位置是不一樣的,尤其在windows2000和wodows NT中,他們的位置隨著登陸用戶的不同而改變。那么我們要如何取得這些特殊目錄的具體位置呢?
當然是利用Api函數(shù),現(xiàn)在我介紹兩個Api函數(shù),利用他們就可以輕松簡單的獲取這些特殊系統(tǒng)目錄。
Function SHGetSpecialFolderLocation(hwndOwner: HWND; nFolder: Integer;
var ppidl: PItemIDList): HResult; stdcall;
Function SHGetPathFromIDList(pidl: PItemIDList; pszPath: PChar): BOOL;stdcall;
其中由nFolder參數(shù)指定的就是各個特殊系統(tǒng)目錄:
CSIDL_DESKTOP:毫無疑問這就是桌面;
CSIDL_DRIVERS:我的電腦;
CSIDL_FAVORITES:收藏夾;
CSIDL_STARTUP:開始菜單;
CSIDL_NETWORK:網(wǎng)上鄰居;
還有很多,你可以查閱一下Delphi的Win32 Api函數(shù)的幫助文件,不過在幫助文件下的這些參數(shù)也不是很全,像收藏夾幫助文件里面就沒有,你可以查閱一下它的頭文件:shlobj.pas。
下面我就利用這兩個函數(shù)取得桌面的路徑(在win98和win2000下都可以使用):
uses shlobj;
var
pitem:PITEMIDLIST;
s:string;
begin
shGetSpecialFolderLocation(handle,CSIDL_DESKTOP,pitem);
setlength(s,100);
shGetPathFromIDList(pitem,pchar(s));
end;
在字符串s中存儲的就是桌面的路徑值。簡單吧!就是這么簡單,但要是你不知道,你就得繞一個大圈子。