访问框架名的结果是“访问被拒绝”;例外
本文关键字:访问 访问被拒绝 例外 拒绝 框架 结果是 | 更新日期: 2023-09-27 17:50:38
我正在为IE制作c#工具栏,我需要访问网站内的某个框架。在最初的测试中,我只是尝试遍历框架,并弹出一个带有框架名称的MessageBox。但每当我尝试这样做时,我都会遇到一个异常,说"访问被拒绝"。异常的全文是:
访问被拒绝。(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
代码如下:
IHTMLSelectionObject currentSelection = myHTMLDocument.selection;
IHTMLFramesCollection2 frames = (IHTMLFramesCollection2)myHTMLDocument.frames;
for (int i = 0; i < frames.length; i++)
{
object refIndex = i;
IHTMLWindow2 currentFrame = (IHTMLWindow2)frames.item(ref refIndex);
if (currentFrame != null)
{
MessageBox.Show(currentFrame.name);
}
else
MessageBox.Show("Null");
}
从我在网上的搜索,我发现这实际上不是一个bug。它应该是这样的。我的问题是:做我想做的事情的正确方法是什么?
提前感谢!
可能是因为您正在尝试从另一个域访问帧而收到此消息。同源策略阻止您这样做。要使其工作,请使用IServiceProvider。
IServiceProvider isp = (IServiceProvider) currentFrame;
然后使用QueryService
查询IWebBrowser2对象。
确保使用System.Runtime.InteropServices