VoyL adlı üyeden alıntı: mesajı görüntüle
// there are always multiple chrome processes, so we have to loop through all of them to find the
// process with a Window Handle and an automation element of name "Address and search bar"
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);
    }
  }
}
şöyle bir kod var. sanırım çalışır 350 ms gecikiyormuş çalışırken ama çok büyük sorun teşkil etmez. O an açık olan chrome sekmesinin adresini buluyormuş. Diğer sekmeye geçersen diğer sekmenin url sini gösterir. Diğer browserları araştıramadım daha.
İlgin için çok teşekkür ederim ama buda çalışmadı

Ben şöyle bir kod buldum fakat kullanamadım.Intptr değeri istiyor onu anlamadım.
FindWindowEx(intPtr,

 IntPtr hAddressBox = FindWindowEx(intPtr, IntPtr.Zero, "Chrome_OmniboxView", IntPtr.Zero);
                StringBuilder sb = new StringBuilder(256);
                SendMessage(hAddressBox, 0x000D, (IntPtr)256, sb);
                temp = sb.ToString();