0

我正在尝试使用 c# 在 Windows 窗体中获取 google chrome 的所有 url。目前我已经尝试过AutomationElement只给我活动标签网址而不是所有打开的标签。

我的代码如下:

public void GetAllUrls()
{
    Process[] procsChrome = Process.GetProcessesByName("chrome");
    foreach (Process chrome in procsChrome)
    {
        // the chrome process must have a window
        if (chrome.MainWindowHandle == IntPtr.Zero)
        {
            continue;
        }

        // find the automation element
        AutomationElement elm = AutomationElement.FromHandle(chrome.MainWindowHandle);
        AutomationElement elmUrlBar = elm.FindFirst(TreeScope.Descendants,
          new PropertyCondition(AutomationElement.NameProperty, "Address and search bar"));

        // if it can be found, get the value from the URL bar
        if (elmUrlBar != null)
        {
            AutomationPattern[] patterns = elmUrlBar.GetSupportedPatterns();
            if (patterns.Length > 0)
            {
                ValuePattern val = (ValuePattern)elmUrlBar.GetCurrentPattern(patterns[0]);
                Console.WriteLine("Chrome URL found: " +  val.Current.Value);
                listBox1.Items.Add(val.Current.Value);
            }
        }
    }
}
4

0 回答 0