Archive for 2011年1月

Windows Vista でのシステム電源の状態

2011年1月15日

http://support.microsoft.com/kb/937556/ja

自動翻訳の意味が分からないので・・・簡単に言うと、次の通り。

軽い眠り S1(スリープ) > S2(スリープ) > S3(スリープ) > S4(休止) 重い眠り 

上記Webページの説明では次の通り。

Windows Vista は、次の 4 つの電源状態を提供します。

S1 は、スリープ状態です。

  • コンピューター システム電源の消費がより少ない電力を消費する S0 (システム状態の作業) の状態
  • コンピューターは他のスリープ状態よりも多くの電力を消費します。
  • プロセッサのクロックがオフになります。
  • バスのクロックは停止します。

S2 は、スリープ状態です。
システム電力状態 S2 はシステム電力状態 S1 似ています。 ただし、CPU コンテキストとシステム キャッシュの内容は失われます。
この電源の状態は、次特性を持ちます。

  • プロセッサがオフになります。
  • バスのクロックは停止します。
  • 一部のバスには、電源が失われる可能性があります。

S3 は、スリープ状態です。 この電源の状態は、次特性を持ちます。

  • システム電力状態 S2 消費よりも少ない電力消費です。
  • プロセッサがオフになります。
  • マザーボードの一部のチップがオフになります。

S4 は休止状態状態です。S4は、最低電力スリープ状態です。また、S4 が起動に最も時間がかかります。

広告

WebBrowser で、innterTextやリンクを取得する方法

2011年1月9日

環境: Visual Studio 2010 / WPF

インターネット上のHTMLより、リンクや文書を取得するには、単にWebClient でHTMLを取って来て、処理すればいいのですが・・・

とある理由でHTMLをブラウズしながら、ドキュメントに含まれるリンクなどを取得する必要があったので、WebBrowser を使って作ってみました。

WebBrowser は、裏側で mshtml の COMで実装されているので、ちょっと使い方が面倒だったのでメモしておきます。

 

参照の追加より、COM のmshtml.tlb を追加する。

image

 

WebBrowserに対して、Navigate でブラウズする。

Navigated イベントだと、document を完全に取得する前に、Navigated イベントが発生してしまう。

そこで、Document が完全にロードを完了したイベントとして、LoadCompleted を使用する。

 

例1: innterTextを取得する場合

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            this.webBrowser1.LoadCompleted += new System.Windows.Navigation.LoadCompletedEventHandler(webBrowser1_LoadCompleted);
        }

        void webBrowser1_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            if (webBrowser1.Document == null)
                return;

            mshtml.IHTMLDocument2 doc2 = (IHTMLDocument2)webBrowser1.Document;

            this.textBox2.Text = doc2.body.innerText;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            string url = this.textBox1.Text;
            this.webBrowser1.Navigate(url);
        }

例2: リンクの HTML をリストする場合

        void webBrowser1_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            if (webBrowser1.Document == null)
                return;

            mshtml.IHTMLDocument2 doc2 = (IHTMLDocument2)webBrowser1.Document;

            foreach (mshtml.IHTMLElement elem in doc2.links)
            {
                this.textBox2.Text += ((mshtml.IHTMLAnchorElement)elem).href + Environment.NewLine;
            }
        }

実際の実行結果はこんな感じ。

image