سلام .
این کار برای هر مرورگر متفاوته ...
1.برای اینترنت اکسپلور همون طور که گفتم باید از SHDocvw استفاده کنید
2.برای فایرفاکس و اپرا هم باید از dde استفاده بشه
3.برای کروم یکم کار سخت تره چون روش بالا جواب نمیده ...
4.برای سافاری رو دقیقا نمیدونم روش راحت تری وجود داره یا نه اما مثل کروم میتونید انجام بدین(اینو اطلاعات زیادی ندارم)
اینترنت اکسپلورر :
از add reference تب COM شما Microsoft Internet Controls رو add کنید
بعد این کد رو بنویسین:
foreach (SHDocVw.InternetExplorer ie in new SHDocVw.ShellWindows())
{
MessageBox.Show(ie.LocationURL);
}
فایرفاکس و اپرا :
اول کامپوننت Ndde رو از اینجا بگیرین و به پروژه اضافه کنید:
http://ndde.codeplex.com/
بعد از این کد استفاده کنید :
string browser = "firefox";//ya opera
NDde.Client.DdeClient dde = new NDde.Client.DdeClient(browser, "WWW_GetWindowInfo");
dde.Connect();
string url = dde.Request("URL", int.MaxValue);
string[] text = url.Split(new string[] { "\",\"" }, StringSplitOptions.RemoveEmptyEntries);
dde.Disconnect();
MessageBox.Show( text[0].Substring(1));
کروم
برای کروم هم از این استفاده کنید
Process[] procsChrome = Process.GetProcessesByName("chrome");
foreach (Process chrome in procsChrome)
{
if (chrome.MainWindowHandle == IntPtr.Zero)
{
continue;
}
AutomationElement elm = AutomationElement.FromHandle(chrome.MainWindowHand le);
AutomationElement elmUrlBar = elm.FindFirst(TreeScope.Descendants,
new PropertyCondition(AutomationElement.NameProperty, "Address and search bar"));
if (elmUrlBar != null)
{
AutomationPattern[] patterns = elmUrlBar.GetSupportedPatterns();
if (patterns.Length > 0)
{
ValuePattern val = (ValuePattern)elmUrlBar.GetCurrentPattern(patterns[0]);
MessageBox.Show("Chrome URL found: " + val.Current.Value.toString());
}