Вопрос по tabs, google-chrome, c# – Как получить список открытых вкладок из Chrome? | C #

2

Поэтому я хочу извлечь открытые вкладки из Google Chrome (заголовок, URL) и вывести список тем, как в диспетчере задач Chrome. До сих пор я пытался отфильтровать все процессы Chrome и получить заголовки окон, но это не работает:

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   ответ
3

Первая ссылка два dll

UIAutomationClient.dll
UIAutomationTypes.dll

Расположен:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0 (or 3.5)

затем

using System.Windows.Automation;

и код

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);
      }
   }
}
Что делать, если есть несколько окон Chrome? Есть ли способ проверить все темы, потому что это просто проверяет самую последнюю. user6879072
Я получаю сообщение об ошибке: ArgumentNullException не обработано user6879072
Я не знаю, в чем проблема: «elmNewTab» по какой-то причине не имеет значения, и это не обрабатывается, но как это возможно, что он работает для вас? Могут ли расширения или что-то еще мешать? user6879072
В строке: AutomationElement elmTabStrip = treewalker.GetParent (elmNewTab); user6879072

Похожие вопросы