Получение списка URL всех открытых вкладок в нескольких окнах с использованием C # - PullRequest
0 голосов
/ 19 января 2019

Я работал над настольным приложением Team Tracking.Я реализовал много методов для отслеживания сотрудников, таких как ведение блога, запись времени простоя и т. Д.

Теперь я пытаюсь найти способ записи URL-адресов всех вкладок Chrome с помощью нескольких окон Chrome + инкогнито.Найдено несколько кодов, но они получают URL только из одного экземпляра Chrome.

Есть ли решение этой проблемы?

static AutoResetEvent signal; 
public static void Main()
{

    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);
            }
        }
    }
    Console.ReadKey();
}

public static void MyOnEntryWritten(object source, EntryWrittenEventArgs e)
{
    Console.WriteLine("In event handler");
    signal.Set();
}
...