我想用SHDocVW.ShellWindows对IE进行监控,发现一个无法解决的现象,打开IE后转跳到页面A,可以获取到A页面。
但是在A页面地址栏输入页面B,转跳后,代码里会同时获取到A页面和B页面。
我有办法确定我获取到的页面里哪个是当前显示的页面吗?
ShellWindows shellwin=new ShellWIndows();
foreach(InternetExplorer broswer in shellwin)
{
if(broswer.Name.Contains("Internet Explorer"))
// 此时IE显示只有页面B,但是控制台会输出页面A与B的名字
Console.WriteLine(browser.LocationName);
}
InternetExplorer实现了IWebBrowser32的接口,可以获取到Busy和ReadState属性。
在上面的例子中,看不见的页面A会变成Busy=True,ReadState=Loading的情况
而在IE实际显示的页面B则Busy=False,ReadState=Complete
这也和我的直觉相反,不过这两个属性可以帮助我判断到底哪个页面是显示的页面吗?