得到windows系統表徵圖的解決方案)

來源:互聯網
上載者:User

如果想得到windows中我的電腦或者近端分享等系統表徵圖可以有如下解決辦法。

方案一
用表徵圖提取軟體從c:\winnt\system32\SHELL32.dll或者C:\WINNT\Explorer.exe中提取出來然後加入到自己的程式中(路徑隨作業系統和安裝目錄不同而變化)這種方法的缺點是不同的作業系統的系統表徵圖有一些變化,比如說2003和2000的系統表徵圖就有很大變化,如果你提取的是2000的表徵圖,應用程式如果在2003下運行可能看起來有一些彆扭。

方案二
同樣是利用c:\winnt\system32\SHELL32檔案來提取,但是這次是利用註冊表和windows的函數來完成。代碼如下:
HICON CTestDlg::GetShellIcon(int nIndex)
{
HICON hIcon=NULL;
HKEY hkeyShellIcons;

//開啟註冊表,讀相應的表徵圖項目
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell I cons", 0,KEY_READ,&hkeyShellIcons)==ERROR_SUCCESS)
{
char szBuffer[MAX_PATH];
DWORD dwSize=MAX_PATH;

char szIndex[4];
sprintf(szIndex,"%d",nIndex);
if(RegQueryValueEx(hkeyShellIcons,szIndex,NULL,NULL,(LPBYTE)szBuffer,&dwSize)==ERROR_SUCCESS)
{
CString strFile,strIndex;
AfxExtractSubString(strFile,szBuffer,0,',');
AfxExtractSubString(strIndex,szBuffer,1,',');
ExtractIconEx(strFile,atoi(strIndex),NULL,&hIcon,1);
}
RegCloseKey(hkeyShellIcons);
}
if(!hIcon)
ExtractIconEx("SHELL32.DLL",nIndex,NULL,&hIcon,1);

return hIcon;
}
這種方法克服了第一種方法使用不靈活的缺點但是代碼量比較大。(index目錄在最後列出)

方案三
利用shell函數SHGetSpecialFolderLocation和SHGetFileInfo。代碼如下:

LPITEMIDLIST lpItemIDList;
SHFILEINFO shinfo;
SHGetSpecialFolderLocation (this->m_hWnd, CSIDL_NETWORK, &lpItemIDList);
SHGetFileInfo( (LPCTSTR)lpItemIDList,
NULL,
&shinfo,
sizeof(shinfo),
SHGFI_SYSICONINDEX | SHGFI_DISPLAYNAME | SHGFI_ICON| SHGFI_SMALLICON|SHGFI_PIDL);
這是shinfo中的icon和hicon儲存了得到的icon的值。
這種方法既有靈活性,代碼量也比較少,推薦使用。在SHGetSpecialFolderLocation中的第二個參數是想得到的圖片的CSIDL值。

【附表1:nindex值說明】
nIndex 意義 說明
0 預設表徵圖
1 預設的 .doc 表徵圖*
2 可執行檔表徵圖

3 關閉的檔案夾表徵圖
4 開啟的檔案夾表徵圖
5 5.25' 磁碟機表徵圖
6 3.5' 磁碟機表徵圖
7 可移動的磁碟機表徵圖
8 硬碟表徵圖
9 網路磁碟機表徵圖
10 斷開的網路磁碟機表徵圖
11 CD-ROM磁碟機表徵圖
12 RAM磁碟機表徵圖
13 整個網狀圖標
14 網路連接表徵圖 u
15 網路工作站表徵圖
16 本機印表機表徵圖 *
17 網狀圖標 u
18 網路工作群組表徵圖 u
19 程式組表徵圖 s
20 文檔表徵圖 s
21 設定表徵圖 s
22 尋找表徵圖 s
23 協助表徵圖 s
24 運行表徵圖 s
25 睡眠表徵圖 s
26 Docking Station 表徵圖 u
27 關機表徵圖 s
28 共用表徵圖 t
29 捷徑的箭頭表徵圖 t
30 大箭頭表徵圖 u
31 空資源回收筒表徵圖 *
32 滿的資源回收筒表徵圖 *
33 撥號網路表徵圖 *
34 案頭表徵圖
35 控制台表徵圖 *
36 程式組表徵圖 s
37 印表機檔案夾表徵圖 *
38 字型檔夾表徵圖 *
39 Windows旗幟表徵圖 * 軟體開發網
40 Audio CD 表徵圖
.
.
.
.49

後面標有符號的說明有特殊用法:
* 這些表徵圖可以在註冊表的其他地方的設定。
t 這些表徵圖必須是空白背景。
s 這些表徵圖將用在開始菜單上。
u 這些表徵圖可能並沒有使用或不能通過註冊表修改


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.