2011-04-20 2 views
3

IE 용 C#에서 도구 모음을 만들고있어 웹 사이트 내의 특정 프레임에 액세스해야합니다. 내 초기 테스트에서 프레임을 순환하고 프레임 이름이있는 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"); 

} 

, 나는이 것을, 사실이 아니라 버그를 발견했다. 그렇게 행동 할 것으로 예상됩니다. 내 질문은 : 내가하려는 일을하는 올바른 방법은 무엇입니까?

미리 감사드립니다.

+0

System.Runtime.InteropServices 사용하십시오 : http://support.microsoft.com/kb/196340를하지만 C#에서 더 완전한 예제가 있는지 모르겠어요. – Josicoco

답변

0

아마도 다른 도메인의 프레임에 액세스하려고하므로이 메시지가 표시됩니다. same origin policy이 작업을 수행하지 못하게합니다. 그것을 작동 시키려면 IServiceProvider를 사용하십시오.

IServiceProvider isp = (IServiceProvider) currentFrame; 

는 쿼리 IWebBrowser2 개체를 얻을 수 QueryService를 사용하여.

은 내가이 본 적이

관련 문제