如何从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