日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用CSIDL打开特殊文件夹

發布時間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用CSIDL打开特殊文件夹 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CSIDL描述及使用說明:
??? CSIDL 表示的是windows shell中一個特殊文件夾的標識值。這里說的特殊文件夾指的是由windows?shell所定義的文件夾,例如:"我的文檔","回收站","Inernet Cache文件夾"就是一些由SHELL指定的特殊文件夾.這些特殊文件夾可以是一個磁盤上的物理路徑,也可以是一個虛擬文件夾(Virtual Folder)!
???? 注:Virtual Folder
???? 虛擬文件夾是一個由windows shell定義過的文件夾,但這個文件夾并沒有與你的電腦上的任何物理 路徑相對應.例如:“我的電腦 ”就是一個包含了所有驅動器的虛擬文件夾,還有如“控制面板”也是一個虛擬文件夾,等等。虛擬文件夾很少應用于非shell函數。
?在windows2000/NT中,許多csidl所涉及的文件夾都是針對各個用戶的。但類似于CSIDL_COMMON_*?可以供所有用戶使用。

?在許多應用中,一個CSIDL可以與下面的標識之一進行組合使用:

? CSIDL_FLAG_CREATE($8000)
??? windows 2000:如果這個CSIDL所引用的文件夾不存在,則創建這個文件夾!.
?? CSIDL_FLAG_DONT_VERIFY($4000)
??? WINDOWS 2000:?無論這個CSIDL所引用的文件夾是否存在都使用它!


? CSIDL_ADMINTOOLS($30)
??? 表示當前用戶的“管理工具”系統文件夾
? CSIDL_ALTSTARTUP($h1D)
??? 不詳
? CSIDL_APPDATA($1A)
??? 表示當前用戶的特定的應用程序數據存儲文件夾,例如:C:\Documents and Settings\username\Application Data
? CSIDL_BITBUCKET($A)
??? 表示回收站
? CSIDL_COMMON_ADMINTOOLS($2F)
??? 表示所有用戶的“管理工具”系統文件夾
? CSIDL_COMMON_ALTSTARTUP($1D)
??? 表示所有用戶的? (只支持WINDOWS NT 系統)
? CSIDL_COMMON_APPDATA($23)
??? 表示所有用戶的特定的應用程序數據存儲文件夾,例如:C:\Documents and Settings\All Users\Application Data
? CSIDL_COMMON_DESKTOPDIRECTORY($19)
??? 表示所有用戶的“桌面”文件夾,例如:C:\Documents and Settings\All Users\Desktop。
? CSIDL_COMMON_DOCUMENTS($2E)
??? 表示所有用戶的“我的文檔”文件夾,例如:C:\Documents and Settings\All Users\Documents
? CSIDL_COMMON_FAVORITES($1F)
??? 表示所有用戶的“我的收藏夾”文件夾。
? CSIDL_COMMON_PROGRAMS($17)
??? 表示所有用戶的“程序”文件夾,例如:C:\Documents and Settings\All Users\Start Menu\Programs
? CSIDL_COMMON_STARTMENU($16)
??? 表示所有用戶的“開始菜單”文件夾,例如:C:\Documents and Settings\All Users\Start Menu
? CSIDL_COMMON_STARTUP($18)
??? 表示所有用戶的“啟動”文件夾,例如:C:\Documents and Settings\All Users\Start Menu\Programs\Startup
? CSIDL_COMMON_TEMPLATES($2D)
??? 表示所有用戶的“模塊”文件夾,例如:C:\Documents and Settings\All Users\Templates
? CSIDL_CONTROLS($3)
??? 表示“控制面板”文件夾
? CSIDL_COOKIES($21)
??? 表示當前用戶Internet Explorer的cookie 文件夾,例如:C:\Documents and Settings\username\Cookies
? CSIDL_DESKTOP($0)
??? 表示“桌面”虛擬文件夾,包含了計算機中的所有內容
? CSIDL_DESKTOPDIRECTORY($10)
??? 表示當前用戶的“桌面”文件夾,例如:C:\Documents and Settings\username\Desktop
? CSIDL_DRIVES($11)
??? 表示“我的電腦”虛擬文件夾,包含了計算機中所有的驅動器
? CSIDL_FAVORITES($6)
??? 表示當前用戶的“收藏夾”文件夾,例如:C:\Documents and Settings\username\Favorites
? CSIDL_FONTS($14)
??? 表示“系統字體”文件夾,例如:C:\WINNT\Fonts
? CSIDL_HISTORY($22)
??? 表示Inernet Explorer的“歷史記錄”文件夾
? CSIDL_INTERNET($1)
??? 表示Internet的這個虛擬文件夾
? CSIDL_INTERNET_CACHE($20)
??? 表示當前用戶的Internet Explorer的"Cache"文件夾,例如:C:\Documents and Settings\username\Temporary Internet Files
? CSIDL_LOCAL_APPDATA($1C)
??? 表示當前用戶的應用程序數據文件夾,例如:C:\Documents and Settings\username\Local Settings\Application Data
? CSIDL_MYMUSIC
??? 表示當前用戶存儲音樂文件的文件夾,例如:C:\Documents and Settings\User\My Documents\My Music
? CSIDL_MYPICTURES($27)
??? 表示當前用戶存儲圖像文件的文件夾,例如:C:\Documents and Settings\username\My Documents\My Pictures
? CSIDL_NETHOOD($13)
??? 表示當前用戶存在的網絡連接的文件夾,例如:C:\Documents and Settings\username\NetHood
? CSIDL_NETWORK($12)
??? 表示“網上鄰居”這個虛擬文件夾
? CSIDL_PERSONAL($5)
??? 表示當前用戶的“我的文檔”文件夾,例如:C:\Documents and Settings\username\My Documents
? CSIDL_PRINTERS($4)
??? 指向“打印機”這個虛擬文件夾
? CSIDL_PRINTHOOD($1B)
??? 表示當前用戶存在的網絡打印機的虛擬文件夾,例如:C:\Documents and Settings\username\PrintHood
? CSIDL_PROFILE($28)
??? 表示當前用用戶配置文件的文件夾
? CSIDL_PROGRAM_FILES($26)
??? 表示程序文件的文件夾,例如:C:\Program Files
? CSIDL_PROGRAM_FILES_COMMON($2B)
??? 表示系統程序共用組件文件夾,例如:C:\Program Files\Common
? CSIDL_PROGRAMS($2)
??? 表示當前用戶的“程序”菜單文件夾,例如:C:\Documents and Settings\username\Start Menu\Programs
? CSIDL_RECENT($8)
??? 表示當前用戶的“文檔”菜單文件夾,例如:C:\Documents and Settings\username\Start Menu\Programs
? CSIDL_SENDTO($9)
??? 表示當前用戶的“發送到”文件夾,例如:C:\Documents and Settings\username\SendTo
? CSIDL_STARTMENU($B)
??? 表示當前用戶的“開始”菜單文件夾,例如:C:\Documents and Settings\username\Start Menu
? CSIDL_STARTUP($7)
??? 表示當前用戶的“啟動”菜單文件夾,例如:C:\Documents and Settings\username\Start Menu\Programs\Startup
? CSIDL_SYSTEM($25)
??? 表示WINDOWS系統的系統文件夾,例如:C:\WINNT\SYSTEM32
? CSIDL_TEMPLATES($15)
??? 表示的是系統中存儲文檔模塊的文件夾
? CSIDL_WINDOWS($24)
??? 表示的是系統中Windows目錄的文件珍,例如:C:\WINNT

CSIDL可以在以下API函數中進行操作使用,至于函數的說明,我們可以參照MSDN中的API說明:
SHGetFolderLocation, SHGetFolderPath, SHGetSpecialFolderLocation, SHGetSpecialFolderPath

我們看下面一個例子:
//打開一些特殊的文件夾,需要加上ActiveX,shellapi,shlObj單元
Uses ActiveX, ShellApi, ShlObj;
Function OpenSpecialFolder(Flag:Integer;Handle: HWND = 0):Boolean;
//這里的Flag就是我們需要打開的文件夾的CSIDL值
? Procedure FreePidl(pidl: PItemIDList);//釋放掉PItemIDList實例
? var
??? allocator: IMalloc;
? begin
??? if Succeeded(shlobj.SHGetMalloc(allocator)) then
??? begin
????? allocator.Free(pidl);
??? {$IFDEF VER90}
????? allocator.Release;
??? {$ENDIF}
??? end;
? end;
var
? exInfo: TShellExecuteInfo;
begin
? FillChar(exInfo, SizeOf(exInfo), 0);//給exInfo設置初始值
? with exInfo do
? begin
??? cbSize:=? Sizeof(exInfo);
??? fMask:= SEE_MASK_FLAG_DDEWAIT or SEE_MASK_IDLIST;
??? Wnd:= handle;
??? nShow:= SW_SHOWNORMAL;
??? lpVerb:=? 'open';
??? SHGetSpecialFolderLocation(Handle, Flag, PItemIDLIst(lpIDList));//定位到由CSIDL值指定的文件夾
? end;
? ShellExecuteEx(@exInfo);//打開文件夾
? FreePidl(exInfo.lpIDList);
end;

//調用上面寫的這個函數:
procedure TForm1.Button5Click(Sender: TObject);
begin
? OpenSpecialFolder($0);//或是OPenSpecialFolder(CSIDL_DESKTOP),打開“桌面”窗口
end;
? 至于CSIDL與其它函數的配置使用方法,大家可自己參照MSDN!

轉載于:https://www.cnblogs.com/MaxWoods/archive/2006/02/17/332304.html

總結

以上是生活随笔為你收集整理的利用CSIDL打开特殊文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。