線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2525
推到 Plurk!
推到 Facebook!

如何用 SHGetFileInfo 取得資料夾的圖示

答題得分者是:aftcast
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-09-12 16:31:02 IP:140.138.xxx.xxx 未訂閱
請問各位,我看了一下 SHGetFileInfo 的說明,它似乎可以抓到磁碟或是目錄的圖示。
目前我知道如何用它抓到特定副檔名的圖示,可是不知道怎麼抓到磁碟或是目錄的圖示。

想請教各位,要怎麼做呢 ?
我想抓到磁碟機的圖示,以及目錄開啟跟關閉的圖示。(在檔案總管裡,左側的樹狀圖在目錄開啟跟關閉時有不同的圖示)
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-09-12 17:35:18 IP:61.229.xxx.xxx 未訂閱

你好,我只能回答你2/3的問題,其中開啟的目錄我也不了解怎麼用!

HICON gFinalIcon;

void __fastcall TForm1::GetIconClick(TObject *Sender)
{
SHFILEINFO info;
DWORD a=0;
String path(LabeledEdit1->Text);

char *sz_path = path.c_str();

TIcon *icon=new TIcon;

try
{
a=SHGetFileInfo(sz_path,
0/*FILE_ATTRIBUTE_DIRECTORY*/, //若要找目錄,就把0改成FILE_ATTRIBUTE_DIRECTORY
&info,
sizeof(info),
SHGFI_USEFILEATTRIBUTES|SHGFI_ICON | SHGFI_SHELLICONSIZE |SHGFI_SYSICONINDEX);
if(a!=0)
{
icon->Handle=gFinalIcon=info.hIcon;
ImageList1->AddIcon(icon);
Image1->Picture->Assign(icon); // will auto destroy last handle
}
}
__finally
{
delete icon;
}


}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
// if(DestroyIcon(gFinalIcon))
// MessageBeep(0);

DestroyIcon(gFinalIcon); //記得還系統,養成好習慣
}
//---------------------------------------------------------------------------

若要找disk icon,只要輸入 c:\ 就找到c的icon,輸入d:\ 就是d的icon。此時SHGetFileInfo的第二參數是0

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
jorping
一般會員


發表:3
回覆:5
積分:1
註冊:2006-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-11-20 17:49:43 IP:220.112.xxx.xxx 未訂閱
直接把你自己的imagelist->handle指向SystemImagelist->handle
然后只要获得在Systemimagelist中的index即可.
------
Jordan.Jeng
系統時間:2024-03-29 15:34:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!