我有一个使用预安装的IE插件提供安全通信的网站。我无权访问此插件代码,因此如果我想从此服务器解析页面,我必须使用IE进行操作。否则会显示错误消息。
我想创建一个C#程序,它将打开这个网站并获取它的正文。 我试过用IE打开IE InternetExplorer ie = new InternetExplorer(); 不幸的是,这个页面导致没有加载插件或者没有对应该进行重定向的javascript做出反应。
我正在尝试使用http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=9683中提供的解决方案。但是有一个问题 - 在创建进程后我无法附加到IE。
ShellWindows m_IEFoundBrowsers = new ShellWindowsClass();
foreach(InternetExplorer Browser in m_IEFoundBrowsers) {
if(Browser.HWND == (int)m_Proc.MainWindowHandle) {
_IE = Browser;
break;
}
}
此代码导致InvalidCastException。当我看一下Process树时,我意识到我的应用程序启动了控制台,启动了IE - 据我所知,这就是问题所在。请帮助我附加到新打开的IE窗口...我已经尝试让运行浏览器的进程的父进程,但它失败了......
答案 0 :(得分:0)
通过查找哪个browser.Document是HTMLDocument以及指定的LocationName或LocationURL来找到浏览器。通过将浏览器强制转换为InternetExplorer,将该浏览器实例附加到InternetExplorer对象。此代码适用于我的系统上的IE 11,并允许与该IE浏览器实例进行交互。
InternetExplorer ie = null
// Launch IE program
// Get all browser objects
ShellWindows allBrowsers = new ShellWindows();
if (allBrowsers.Count == 0)
throw new Exception("Cannot find IE");
// Attach to IE program process
foreach (InternetExplorer browser in allBrowsers)
{
if (browser.Document is HTMLDocument && browser.LocationName == "My Test Web Site")
{
Console.WriteLine("Found IE browser '" + browser.LocationName + "'");
ie = (InternetExplorer)browser;
}
}
if (ie == null)
throw new Exception("Failed to attach to IE");