/**************************************************************************** 通过不断分析网站路径的方法获得网站图标。 比如网站:http://hi.baidu.com/qiujiejia/ 则枚举所有的可能网址直到找到icon为止: 可能一:http://hi.baidu.com/qiujiejia/favicon.ico 可能二:http://hi.baidu.com/favicon.ico 但此方法并不是万能的。 ****************************************************************************/ bool GetWebsiteIcon(TCHAR* WebSite,TCHAR* IconName) { TCHAR* pos=WebSite+_tcslen(WebSite); //如果没有斜杠,补上 if ( *(pos-1)!='/' ) { *(pos)='/'; *(pos+1)=NULL; } do { if (*pos=='/') { _tcscpy(pos+1,_T("favicon.ico")); if (0==URLDownloadToFile(NULL,WebSite,IconName,NULL,NULL)) { //判断图标是否有效 HICON hIcon=ExtractIcon(NULL,IconName,0); if (hIcon) { DestroyIcon(hIcon); return true; } } } //如果提取的路径已剩下“http://” ,则返回错误 if (pos-8<WebSite) return false; pos--; } while(1); } void CDemoDlg::OnButton1() { TCHAR WebSite[1000]={0}; ::GetWindowText(::GetDlgItem(m_hWnd,IDC_EDIT1),WebSite,sizeof(WebSite)/sizeof(TCHAR)-20); if (GetWebsiteIcon(WebSite,_T("c://df.ico"))) { MessageBox("successful"); } else { MessageBox("failed"); } }