如何从Chrome和Firefox获取打开页面的URL?

我正在编写一个系统任务栏应用程序,该应用程序需要检查内部基于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进行与上述相同的操作(即获取浏览器中所有打开的标签页的网址)?(我不会打扰其他浏览器,因为它们是我们组织中唯一使用的浏览器。)

回答:

它适用于每种浏览器。那是主要的:

  • 您可以使用SHDocVw(就像以前一样)
  • 您可以使用DDE获取URL(以下来源)
  • 枚举所有子窗口时可以获取URL,直到使用“ Chrome_OmniboxView”类访问控件,然后使用GetWindowText
  • 您可以使用与Firefox相同的功能,但使用“ opera”
  • 由于使用自定义绘制控件,因此没有已知方法

使用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;

}

}

以上是 如何从Chrome和Firefox获取打开页面的URL? 的全部内容, 来源链接: utcz.com/qa/428664.html

回到顶部