Visual Basic 中学校 掲示板
http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9423
こんなやりとりがありまして。
最初の返信でWikipediaのリンクだけ示したのは、眠くてまともにコードが書けなかったからです。
その後、管理人のるきおさんがコードを書いていたので、僕も書きたくなったわけです。
眠くなかったのでサクっと出来ました。折角なのでC#に書き直してここに記録。
using System; using System.Drawing; using System.IO; using System.Net; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1:Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.webBrowser1.Navigate("http://blogs.dion.ne.jp/anis7742/"); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { foreach(HtmlElement linkTag in this.webBrowser1.Document.GetElementsByTagName("link")) { string relAttribute = linkTag.GetAttribute("rel"); string iconUrl; if(relAttribute == "shortcut icon" || relAttribute == "icon") { iconUrl = linkTag.GetAttribute("href"); if(iconUrl.StartsWith("http")) { //完全なURLの場合 this.Icon = getIconFromUrl(iconUrl); } else if(iconUrl.StartsWith("/")) { //絶対パスの場合 this.Icon = getIconFromUrl("http://" + e.Url.Host + iconUrl); } else { //相対パスの場合 this.Icon = getIconFromUrl(e.Url.ToString() + iconUrl); } break; } } //タグでの指定が無い場合 this.Icon = getIconFromUrl("http://" + e.Url.Host + "/favicon.ico"); } private Icon getIconFromUrl(string url) { using(WebClient webClient = new WebClient()) using(MemoryStream stream = new MemoryStream(webClient.DownloadData(url))) { return new Icon(stream); } } } }