言語バー空気読め配布

言語バーって空気読まないですよね。

タスクバーに入れてると作業中の視線移動が多くなるし、デスクトップに置いとくと見失ってしまいます。

テキストボックスをクリックして、『さぁ文章を入力しよう』とタイピングを始めたら、IMEのモードが意図したものじゃなくてイライラ、なんてことがありませんか?

言語バー空気読めはそんな問題を解決します。

起動するとタスクトレイに常駐して、フォーカスが移ったタイミングで言語バーをキャレットの位置に移動し、数秒経ったらウィンドウの外に退避するように言語バーを調教するソフトです。

配布ページ

C#|WebBrowserで表示中のWebページのファビコンを取得

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);
			}
		}
	}
}