我正在编写一个系统任务栏应用程序,该应用程序需要检查内部基于Web的应用程序是否已打开。
我可以使用以下方法检查IE:
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); string filename; bool sdOpen = false; foreach (SHDocVw.InternetExplorer ie in shellWindows) { filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); if (filename.Equals("iexplore")) { string[] urlParts = (ie.LocationURL.ToString()).Split('/'); string website = urlParts[2]; if (website == "myApp:8080") { sdOpen = true; }; } } if (sdOpen) { Console.WriteLine("App is open"); } else { Console.WriteLine("App is not open"); }; Console.ReadKey(true);
但是,某些使用该系统的用户更喜欢Chrome或Firefox。
我该如何针对Chrome和Firefox进行与上述相同的操作(即获取浏览器中所有打开的标签页的网址)?(我不会打扰其他浏览器,因为它们是我们组织中唯一使用的浏览器。)
它适用于每种浏览器。那是主要的:
GetWindowText
编辑:自2014年以来,Chrome发生了变化,您需要获取具有Acessibility的URL。
使用DDE从Firefox / Opera获取URL的代码(使用NDDE-唯一适用于.NET的DDE包装器):
// // usage: GetBrowserURL("opera") or GetBrowserURL("firefox") // private string GetBrowserURL(string browser) { try { DdeClient dde = new DdeClient(browser, "WWW_GetWindowInfo"); dde.Connect(); string url = dde.Request("URL", int.MaxValue); string[] text = url.Split(new string[] { "\",\"" }, StringSplitOptions.RemoveEmptyEntries); dde.Disconnect(); return text[0].Substring(1); } catch { return null; } }