我需要监视客户端 PC 上的所有 IE 实例,并对导航到某些页面的浏览器进行操作,然后再次对它们进行操作以离开这些页面或关闭托管这些页面的窗口。
我编写了以下代码,将列出所有打开的窗口:
private static void ListWindows()
{
SHDocVw.ShellWindows shellWindows = new ShellWindows();
shellWindows.WindowRegistered += new DShellWindowsEvents_WindowRegisteredEventHandler(shellWindows_WindowRegistered);
foreach (SHDocVw.IWebBrowser2 ie in shellWindows)
{
Console.WriteLine("ie.LocationURL: " + ie.LocationURL);
}
}
部分基于对这个问题的回答。
但是如果我要使用它,我需要每隔一秒左右轮询一次,并且每次都遍历该列表。
我还发现了一些允许我注册事件的代码,如下所示:
SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
IE.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(IE_BeforeNavigate2);
IE.OnQuit += new DWebBrowserEvents2_OnQuitEventHandler(IE_OnQuit);
IE.WindowClosing += new DWebBrowserEvents2_WindowClosingEventHandler(IE_WindowClosing);
但这似乎只适用于我自己打开的窗口(或者我做错了什么)。有没有办法为桌面上的任何 IE 窗口注册事件处理程序?