ㄧ個讀取桌面資料夾的方法 |
|
jimmychn
一般會員 發表:3 回覆:21 積分:19 註冊:2002-09-09 發送簡訊給我 |
//讀取目前使用者Desktop目錄
TRegistry *reg=new TRegistry();
reg->LazyWrite=true;
reg->RootKey=HKEY_CURRENT_USER;
reg->OpenKey("\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",false);
DesktopDir=reg->ReadString("Desktop");
delete reg; 想了很久才想到,才在REGEDIT內找到,不知有沒有更快的方法 >>>好心有好報<<<
------
>>>好心有好報 |
axsoft
版主 發表:681 回覆:1056 積分:969 註冊:2002-03-13 發送簡訊給我 |
jimmychn您好:
試試這一篇文章試試,文章作者及來源已不可考
判斷windows的Desktop及其它目錄使用API函數SHGetSpecialFolder。shlobj.h裡有SHGetSpecialFolder的原型宣告。這個函數可以幫我們找到windows的Desktop目錄、啟動目錄、我的檔案目錄等。 SHGetSpecialFolder需要三個參數。 第一個參數是HWND,它指定了"擁有者window":在取用這個函數時可能出現的對話框或訊息框。第二個參數是一個整數id,決定哪個目錄是待尋找目錄,它的取值可能是:CSIDL_BITBUCKET 資源回收筒 CSIDL_CONTROLS 控制台 CSIDL_DESKTOP Windows 桌面desktop CSIDL_DESKTOPDIRECTORY desktop的目錄 CSIDL_DRIVES 我的電腦 CSIDL_FONTS 字形 CSIDL_NETHOOD 網路上的芳鄰 CSIDL_NETWORK 網路上的芳鄰 virtual folder CSIDL_PERSONAL 我的文件 CSIDL_PRINTERS 印表機 CSIDL_PROGRAMS 所有程式 CSIDL_RECENT 最近常用文件 CSIDL_SENDTO 「發送到」選單項 CSIDL_STARTMENU 啟動選單 CSIDL_STARTUP 啟動目錄 CSIDL_TEMPLATES 暫存檔 最後一個參數是pidl地址。SHGetSpecialFolderLocation把地址寫到pidl。 下面的Source Code ,怎樣使用SHGetSpecialFolderLocation: //-------------------------------------------------------------------- -- void __fastcall TForm1::Button1Click(TObject *Sender) { LPITEMIDLIST pidl; LPMALLOC pShellMalloc; char szDir[MAX_PATH]; if(SUCCEEDED(SHGetMalloc(&pShellMalloc))) { if(SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOPDIRECTORY, &pidl))) { // 如果成功返回true if(SHGetPathFromIDList(pidl, szDir)) { Label1->Caption = szDir; } pShellMalloc->Free(pidl); } pShellMalloc->Release(); } } //-------------------------------------------------------------------- --注意: 有些目錄是空的。有些特定的目錄在這個文件系統上並沒有一個對應的目錄 HAVE A NICE DAY FOR YOU |
jimmychn
一般會員 發表:3 回覆:21 積分:19 註冊:2002-09-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |