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で書いた方が楽できるだろうと思います。

Microsoft Edgeを操作するVBScript前のページ

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

関連記事

  1. Windows 10

    Windows 10 May 2021 Update(21H1)をクリーンインストールしてみました。…

    下記記事にもあるように、5月18日(米国時間)にWindows 10 …

  2. Windows 10

    Microsoft Edgeを起動するC#コード

    以前書いた記事「「ファイル名を指定して実行」からMicrosoft E…

  3. Windows 10

    特殊フォルダやプログラムのCLSID一覧とShellコマンド一覧

    「「プログラムと機能」からインストールされているアプリケーションの一覧…

  4. Office関連

    【2017年1月版】Microsoft Edgeを操作するVBAマクロ(DOM編)

    2021/10/1 追記:本記事は公開されてから大分時間が経ってお…

  5. Windows 10

    [Windows 10]切り取り&スケッチを起動するショートカット

    Windows 10の「切り取り&スケッチ」機能、皆さん使ってますでし…

  6. Windows関連

    Windows 10 IMEの「クラウド候補機能」の仕組みを追ってみた。

    「ついにWindows 10 日本語IMEにクラウド候補機能が搭載され…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP