2011-04-20 65 views
3

我正在C#上爲IE創建工具欄,我需要訪問網站中的某個框架。在我最初的測試中,我只是想通過框架循環,並有一個框架名稱的MessageBox彈出框。但是,每當我嘗試這樣做時,我都會遇到異常情況,並說「訪問被拒絕」。例外的全文爲:在「訪問被拒絕」異常時訪問框架名稱結果

訪問被拒絕。 (異常來自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"); 

} 

從我在網絡上searchs,我發現,這是,實際上,不是一個錯誤。預計會有這種表現。我的問題是:做我想做的事情的正確方法是什麼?

提前致謝!

+0

我已經看到了這一點:http://support.microsoft.com/kb/196340,但我不知道是否有在C#中一個更完整的例子。 – Josicoco 2011-04-20 22:00:05

回答

0

可能您正在收到此消息,因爲您正試圖從另一個域訪問一個幀。 same origin policy阻止你這樣做。爲了使它工作使用IServiceProvider。

IServiceProvider isp = (IServiceProvider) currentFrame; 

然後使用QueryService查詢得到IWebBrowser2對象。

請確保您使用System.Runtime.InteropServices

相關問題