Closed lpSharif closed 6 months ago
// 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); } } }
I have created a WPF app using this. Then run that exe using Process.runSync
and read URL from that process. However this is a time consuming process. I wonder, if there is any way to achieve the same goal in faster way like getting window name and process file name.
I'm searching for currently active windows name, file name and tab URL(if it is browser). With the help of @halildurmus, I've managed to get windows name and file name. But still unable to get browser tab URL. I searched everywhere but found nothing. However I got a code from StackOverflow which is written in C#. I tried to convert it into dart but in vain. I need help. Thanks in advance. Here is the code in c#.