2016-10-16 14 views
1

Google Chrome(タイトル、URL)から開いているタブを抽出し、chromeタスクマネージャのようなテーマを一覧表示したいと考えています。 は、これまでのところ、私はすべてのクロムプロセスをフィルタリングして、ウィンドウのタイトルを取得しようとしているが、それは動作しません:クロムから開いたタブのリストを取得するには? | C#

var procs = Process.GetProcesses(); 

... 

foreach (var proc in procs) 
{ 
    if (Convert.ToString(proc.ProcessName) == "chrome") 
    { 
     Console.WriteLine("{0}: {1} | {2} | {3} ||| {4}\n", i, proc.ProcessName, runtime, proc.MainWindowTitle, proc.Handle); 
    } 
} 

これは私のアドレスやタブのタイトルを与えるものではありません、別の方法がありますそれをするために?

答えて

1

まずリファレンス位置する二つのdll

UIAutomationClient.dll 
UIAutomationTypes.dll 

:次に

using System.Windows.Automation; 

とコードC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 (or 3.5)

それはENGを探している

Process[] procsChrome = Process.GetProcessesByName("chrome"); 
if (procsChrome.Length <= 0) 
{ 
    Console.WriteLine("Chrome is not running"); 
} 
else 
{ 
    foreach (Process proc in procsChrome) 
    { 
     // the chrome process must have a window 
     if (proc.MainWindowHandle == IntPtr.Zero) 
     { 
      continue; 
     } 
     // to find the tabs we first need to locate something reliable - the 'New Tab' button 
     AutomationElement root = AutomationElement.FromHandle(proc.MainWindowHandle); 
     Condition condNewTab = new PropertyCondition(AutomationElement.NameProperty, "New Tab"); 
     AutomationElement elmNewTab = root.FindFirst(TreeScope.Descendants, condNewTab); 
     // get the tabstrip by getting the parent of the 'new tab' button 
     TreeWalker treewalker = TreeWalker.ControlViewWalker; 
     AutomationElement elmTabStrip = treewalker.GetParent(elmNewTab); 
     // loop through all the tabs and get the names which is the page title 
     Condition condTabItem = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.TabItem); 
     foreach (AutomationElement tabitem in elmTabStrip.FindAll(TreeScope.Children, condTabItem)) 
     { 
      Console.WriteLine(tabitem.Current.Name); 
     } 
    } 
} 
+0

行:AutomationElement elmTabStrip = treewalker.GetParent(elmNewTab); – user6879072

+0

エラーは何かしていますか? – Mostafiz

+0

エラーが発生しました:ArgumentNullExceptionが処理されていません – user6879072

-1

お使いのブラウザ、それが英語でない場合は日本語コンテンツ「新しいタブ」、それがテキストを検索していないそれはちょうどこのように動作します私は本当にあなたがこれをovercomplicated理由を知らない

+0

ここでポイントは何ですか? –

0

... を動作しません。

AutomationElement root = AutomationElement.FromHandle(process.MainWindowHandle); 
Condition condition = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window); 
var tabs = root.FindAll(TreeScope.Descendants, condition); 
関連する問題