Windows 10

起動中のMicrosoft EdgeからタイトルとURLを取得するC#コード(UI Automation編)

2017/8/18 追記:
当記事のコードは現在動作しなくなっているため、新しくコードを書き直しました。


Microsoft EdgeのDeveloper Resourcesを見てみると、“サポートが必要ならStack Overflowで聞いてね!”的なことが書いてあります。

そしてStack OverflowにはEdge関連の質問が集まっているわけですが、外部からの制御に関しては下記のような質問が寄せられています(2015/8/18 時点)。

特に「EdgeからURLとタイトルを取得したい」という質問では、Microsoftの中の人が回答をつけていて、UI Automationを使ったコードを紹介しています。

当ブログでもすでにこの記事で同様のコードを紹介していますが、.NETではコードを書いていなかったので、良い機会なのでC#でも同じ処理を行うコードを書いてみたいと思います。

※ UIAutomationClient, UIAutomationTypes 要参照

using System;
using System.Windows.Automation;

namespace UIAutomationEdge
{
  class Program
  {
    public static void Main(string[] args)
    {
      AutomationElement root = AutomationElement.RootElement;
      AutomationElement edge = root.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "TitleBar"));
      edge = edge.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ClassNameProperty, "Windows.UI.Core.CoreWindow"));
      if (edge != null) {
        AutomationElement tabslist = edge.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "TabsList"));
        AutomationElementCollection items = tabslist.FindAll(TreeScope.Children, new PropertyCondition(AutomationElement.ClassNameProperty, "GridViewItem"));
        foreach (AutomationElement elm in items) {
          SelectionItemPattern sel = (SelectionItemPattern)elm.GetCurrentPattern(SelectionItemPattern.Pattern);
          sel.Select();
          AutomationElement address = edge.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.AutomationIdProperty, "addressEditBox"));
          address.SetFocus();
          ValuePattern v = (ValuePattern)address.GetCurrentPattern(ValuePattern.Pattern);
          Console.WriteLine("Title:" + elm.Current.Name + ", URL:" + v.Current.Value);
        }
      }
    }
  }
}

AutomateMicrosoftEdge_UIA_Csharp_01

VBAに比べて大分スッキリしたコードになりました。
PowerShellでMicrosoft Edgeを操作する」でも書いている通り、EdgeのオートメーションにはSelenium + WebDriverがオススメですが、UI Automationを使う場合は.NETで書いた方が楽できるだろうと思います。

関連記事

  1. Windows 10

    Chromium版のMicrosoft Edgeをインストールしてみました。

    下記記事の通り、今月の15日(米国時間)付でChromiumベースのM…

  2. Windows 10

    Microsoft Edgeでリンク先を開く

    Microsoft Edgeでリンク先を開く前々回の記事の関連…

  3. Windows関連

    Windows コマンド ライン リファレンス

    未だに出番がなにかと多いコマンドライン、コマンド名やオプションを忘れて…

  4. Windows関連

    Windows 8 Consumer Preview フォーラムのQ&Aまとめ

    2012/3/1 追記:Microsoft Answers の使用条件…

  5. Windows関連

    [Windows 8]アプリをアンインストールする。

    今回はWindows 8でストアからインストールしたアプリをアンインス…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP