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

請問如何用ExtractIcon來取得檔案所對應的ICON呢?

答題得分者是:RaynorPao
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-13 21:14:44 IP:218.164.xxx.xxx 未訂閱
as title.. 請問用ExtractIcon傳的每個參數...各代表什麼意思呢? 是否能附個範例呢???? 還有....如果要抓硬碟或是光碟機等裝置的ICON.. 用ExtractIcon也能做嗎???? 煩請指教....謝謝
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-13 21:46:44 IP:61.221.xxx.xxx 未訂閱
引言: 請問用ExtractIcon傳的每個參數...各代表什麼意思呢? 是否能附個範例呢????
paf 你好:
(1)詳細的說明~~麻煩你自行參考 M$DN 中的說明
   http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Icons/IconReference/IconFunctions/ExtractIcon.asp
(2)範例程式碼(執行完畢後,看你螢幕的左上角)
   >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-13 23:25:24 IP:218.164.xxx.xxx 未訂閱
引言:
引言: 請問用ExtractIcon傳的每個參數...各代表什麼意思呢? 是否能附個範例呢????
paf 你好:
(1)詳細的說明~~麻煩你自行參考 M$DN 中的說明
   http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Icons/IconReference/IconFunctions/ExtractIcon.asp
(2)範例程式碼(執行完畢後,看你螢幕的左上角)
   >    -- >< face="Verdana, Arial, Helvetica">
RaynorPao大大...感謝你的回答    請問一下..只能抓*.exe的icon 嗎???    小弟我試抓*.mp3...好像不行耶...    還有....對於磁碟機裝置的圖示呢??還有資料夾的圖示..    能夠用這個function抓出來嗎?     
        
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-13 23:38:49 IP:218.164.xxx.xxx 未訂閱
引言:
引言:
引言: 請問用ExtractIcon傳的每個參數...各代表什麼意思呢? 是否能附個範例呢????
paf 你好:
(1)詳細的說明~~麻煩你自行參考 M$DN 中的說明
   http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Icons/IconReference/IconFunctions/ExtractIcon.asp
(2)範例程式碼(執行完畢後,看你螢幕的左上角)
   >    -- >< face="Verdana, Arial, Helvetica">
RaynorPao大大...感謝你的回答    請問一下..只能抓*.exe的icon 嗎???    小弟我試抓*.mp3...好像不行耶...    還有....對於磁碟機裝置的圖示呢??還有資料夾的圖示..    能夠用這個function抓出來嗎?     
小弟看了說明...好像只能抓*.exe和*.dll,*.ico的檔案而已.. 如果要抓其他檔名跟磁碟裝置.....該用什麼function呢???
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-14 00:14:17 IP:61.221.xxx.xxx 未訂閱
引言: 小弟看了說明...好像只能抓*.exe和*.dll,*.ico的檔案而已.. 如果要抓其他檔名跟磁碟裝置.....該用什麼function呢???
paf 你好:
(1)對,照文件中的說法是這樣子的
( >
   >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-02-14 00:27:11 IP:218.164.xxx.xxx 未訂閱
引言:
引言: 小弟看了說明...好像只能抓*.exe和*.dll,*.ico的檔案而已.. 如果要抓其他檔名跟磁碟裝置.....該用什麼function呢???
paf 你好:
(1)對,照文件中的說法是這樣子的
( >
   >    -- >< face="Verdana, Arial, Helvetica">
小弟找了一下資料....    找到SHGetFileInfo這個function....好像可以抓到    a file,a folder,a directory,or a drive root的資訊(包括icon)    但好像只能在NT的OS上用而已.....    難道真的沒有其他辦法能夠讓一般的OS能夠做到像SHGetFileInfo這樣的功能嗎?     
        
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-02-14 00:32:39 IP:61.221.xxx.xxx 未訂閱
引言: 找到SHGetFileInfo這個function....好像可以抓到 a file,a folder,a directory,or a drive root的資訊(包括icon) 但好像只能在NT的OS上用而已..... 難道真的沒有其他辦法能夠讓一般的OS能夠做到像SHGetFileInfo這樣的功能嗎?
Requirements Version 4.00 and later of Shell32.dll Windows NT/2000: Requires Windows NT 4.0 or later. Windows 95/98/Me: Requires Windows 95 or later. Header: Declared in Shellapi.h. Import Library: Shell32.lib. -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-02-14 00:48:57 IP:218.164.xxx.xxx 未訂閱
引言:
引言: 找到SHGetFileInfo這個function....好像可以抓到 a file,a folder,a directory,or a drive root的資訊(包括icon) 但好像只能在NT的OS上用而已..... 難道真的沒有其他辦法能夠讓一般的OS能夠做到像SHGetFileInfo這樣的功能嗎?
Requirements Version 4.00 and later of Shell32.dll Windows NT/2000: Requires Windows NT 4.0 or later. Windows 95/98/Me: Requires Windows 95 or later. Header: Declared in Shellapi.h. Import Library: Shell32.lib. -- Enjoy Researching & Developing --
感謝RaynorPao大大的回答... 請問哪可下載到v 4.00以上版本的Shell32.dll呢??? 還是每個Compile或OS都附有此dll呢?.....
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-02-14 08:19:53 IP:203.73.xxx.xxx 未訂閱
引言: 請問哪可下載到v 4.00以上版本的Shell32.dll呢??? 還是每個Compile或OS都附有此dll呢?.....
paf 你好: 基本上~~目前每個 Windows OS 都有這個檔案 如果是 Windows 9X/ME, 此檔案應該在 System 目錄下 如果是 Windows NT/2000/XP, 此檔案應該在 System32 目錄下 找到此檔案以後,按右鍵,選內容,就可以看到它的版本資訊了 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-02-14 15:23:07 IP:218.164.xxx.xxx 未訂閱
引言:
引言: 請問哪可下載到v 4.00以上版本的Shell32.dll呢??? 還是每個Compile或OS都附有此dll呢?.....
paf 你好: 基本上~~目前每個 Windows OS 都有這個檔案 如果是 Windows 9X/ME, 此檔案應該在 System 目錄下 如果是 Windows NT/2000/XP, 此檔案應該在 System32 目錄下 找到此檔案以後,按右鍵,選內容,就可以看到它的版本資訊了 -- >< face="Verdana, Arial, Helvetica"> 意思就是說...只要有shell32.dll 那SHGetFileInfo就在任何OS都能使用囉?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-02-14 20:22:14 IP:61.221.xxx.xxx 未訂閱
引言: 意思就是說...只要有shell32.dll 那SHGetFileInfo就在任何OS都能使用囉?
理論上來說~~在 Windows95 之後的 OS 都能用 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-02-14 21:31:53 IP:218.164.xxx.xxx 未訂閱
引言:
引言: 意思就是說...只要有shell32.dll 那SHGetFileInfo就在任何OS都能使用囉?
理論上來說~~在 Windows95 之後的 OS 都能用 -- >< face="Verdana, Arial, Helvetica"> 謝謝.....對了...再問一個問題..
SHFILEINFO info;
SHGetFileInfo("C:\\WINDOWS\\notepad.exe",
               &info,
               sizeof(info),
               SHGFI_ICON);
DrawIcon(GetDC(0), 10, 10, info.hIcon);
DestroyIcon(info.hIcon);
上面的程式碼可以抓出ICON並且畫出來. 但是.要如何把這個ICON放到ImageList裡面. 讓其他的元件使用呢?? 煩請大大指教..謝謝!!!!!!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-02-14 23:03:40 IP:61.221.xxx.xxx 未訂閱
引言: 謝謝.....對了...再問一個問題..
SHFILEINFO info;
SHGetFileInfo("C:\\WINDOWS\\notepad.exe",
               &info,
               sizeof(info),
               SHGFI_ICON);
DrawIcon(GetDC(0), 10, 10, info.hIcon);
DestroyIcon(info.hIcon);
上面的程式碼可以抓出ICON並且畫出來. 但是.要如何把這個ICON放到ImageList裡面. 讓其他的元件使用呢?? 煩請大大指教..謝謝!!!!!! < face="Verdana, Arial, Helvetica"> paf 你好: 請參考以下的做法 < class="code"> SHFILEINFO info; DWORD dwImageHandle=0; dwImageHandle=SHGetFileInfo("C:\\WINNT\\notepad.exe", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SHELLICONSIZE | SHGFI_SYSICONINDEX); if(dwImageHandle!=0) { ImageList2->Handle=dwImageHandle; ImageList2->ShareImages=true; } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-02-14 23:15:28 IP:218.164.xxx.xxx 未訂閱
引言: paf 你好: 請參考以下的做法 < class="code"> SHFILEINFO info; DWORD dwImageHandle=0; dwImageHandle=SHGetFileInfo("C:\\WINNT\\notepad.exe", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SHELLICONSIZE | SHGFI_SYSICONINDEX); if(dwImageHandle!=0) { ImageList2->Handle=dwImageHandle; ImageList2->ShareImages=true; } -- Enjoy Researching & Developing --
感謝大大的回答.... 但小弟試了..卻在ToolBar的Button上..出現一個手掌耶. 很奇怪. 程式碼真的沒問題嗎?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-02-14 23:38:25 IP:61.221.xxx.xxx 未訂閱
引言: 但小弟試了..卻在ToolBar的Button上..出現一個手掌耶. 很奇怪. 程式碼真的沒問題嗎?
paf 你好: 你先試試看用以下方法做驗證 看是不是有 *. class="code"> SHFILEINFO info; DWORD dwImageHandle=0; void __fastcall TForm1::Button2Click(TObject *Sender) { dwImageHandle=SHGetFileInfo("C:\\WINNT\\notepad.exe", 0, &info, sizeof(info), SHGFI_ICON | SHGFI_SHELLICONSIZE | SHGFI_SYSICONINDEX); if(dwImageHandle!=0) { ShowMessage("Yes"); ImageList2->Handle=dwImageHandle; ImageList2->ShareImages=true; } for(int i=0; iCount; i ) { TIcon *icon=new TIcon; ImageList2->GetIcon(i, icon); icon->SaveToFile(IntToStr(i) ".ico"); delete icon; } } 備註: 如果還是有問題的話~~是否能夠把你的程式碼貼上來呢?? --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
Londer
一般會員


發表:5
回覆:32
積分:7
註冊:2003-01-08

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-02-15 00:37:30 IP:218.187.xxx.xxx 未訂閱
試試看這樣是不是你要的功能: >>>>>
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-02-15 02:03:56 IP:218.164.xxx.xxx 未訂閱
引言: 試試看這樣是不是你要的功能: >>>>>>< face="Verdana, Arial, Helvetica">
SHFILEINFO info;
DWORD a=0;
TIcon* icon=new TIcon;
a=SHGetFileInfo(".txt",
                 0,
                 &info,
                 sizeof(info),
SHGFI_USEFILEATTRIBUTES|SHGFI_ICON | SHGFI_SHELLICONSIZE |SHGFI_SYSICONINDEX);
   if(a!=0)
   {
      icon->Handle=info.hIcon;
      ImageList1->AddIcon(icon);
      delete icon;
      icon=NULL;
   }
以上是小弟寫的程式碼 謝謝二位大大的回答... 小弟結合二位大大的程式碼... 終於做出來了.... 實在非常感謝大大們的回答......謝謝^^ <> > >
paf
初階會員


發表:36
回覆:70
積分:41
註冊:2002-12-27

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-02-15 12:57:59 IP:218.164.xxx.xxx 未訂閱
引言:
SHFILEINFO info;
DWORD a=0;
TIcon* icon=new TIcon;
a=SHGetFileInfo(".txt",
                 0,
                 &info,
                 sizeof(info),
SHGFI_USEFILEATTRIBUTES|SHGFI_ICON | SHGFI_SHELLICONSIZE |SHGFI_SYSICONINDEX);
   if(a!=0)
   {
      icon->Handle=info.hIcon;
      ImageList1->AddIcon(icon);
      delete icon;
      icon=NULL;
   }
以上是小弟寫的程式碼 謝謝二位大大的回答... 小弟結合二位大大的程式碼... 終於做出來了.... 實在非常感謝大大們的回答......謝謝^^ <> > > < face="Verdana, Arial, Helvetica"> 小弟已解決此問題了... 那問題..好像是Masked不夠完整.... 所以只要把ImageList中BkColor屬性改為clScrollBar就可以show漂亮的圖了 大家參考看看 在此感謝二位前輩的指教....小弟受獲不淺.......!!!!
chtai
高階會員


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

發送簡訊給我
#19 引用回覆 回覆 發表時間:2006-08-31 02:40:02 IP:211.76.xxx.xxx 未訂閱
請問要怎麼抓到磁碟機或是資料夾打開跟合起來的圖示呢 ?

===================引 用 文 章===================
 SHFILEINFO info; DWORD a=0; TIcon* icon=new TIcon; a=SHGetFileInfo(".txt",                  0,                  &info,                  sizeof(info), SHGFI_USEFILEATTRIBUTES|SHGFI_ICON | SHGFI_SHELLICONSIZE |SHGFI_SYSICONINDEX);    if(a!=0)    {       icon->Handle=info.hIcon;       ImageList1->AddIcon(icon);       delete icon;       icon=NULL;    } 
以上是小弟寫的程式碼 謝謝二位大大的回答... 小弟結合二位大大的程式碼... 終於做出來了.... 實在非常感謝大大們的回答......謝謝^^ ps.但有一個怪怪的現象..就是..例如磁碟機.或是資料夾. 抓出來的圖案..在邊邊都會多出很多黑黑的現象(好像是xp style的圖都會如此) Londer大大的程式也會有如此的現象!!
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
系統時間:2024-03-30 0:03:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!