웹, HTML

CoCreateInstance 로 익스플로러 띄우고 IWebBrowser2 인터페이스 얻기,,, 참조)

디버그정 2009. 11. 14. 09:04

데브피아 질문글 발췌,,,, 비스타에서는 아직 좀 문제가 있는 듯 하다.

아래는 새 익스플로러창으로 원하는 사이트를 열어주는 함수입니다.

XP에서는 문제 없이 잘 열립니다.

그런데 vista에서는 제가 열려고하는 pWebBrowser가 열린다음 새로운 익스플로러창을 또 열려서 그곳에서

사이트가 열려 버리네요.

열고자 하는 pWebBrowser에는 아무런 내용도 나타나지 않구요.


비스타에서는 아래와 같이 사용하면 안되는것인지 궁금합니다.


// IWebBrowser2를 사용하여 사이트를 여는 함수
BOOL CExplorerPopup::OpenNewWindow(LPCTSTR pAddress)
{


 IWebBrowser2 *pWebBrowser;

 HRESULT hr;


 // 웹브라우저 객체를 생성한다.
 hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&pWebBrowser);


 if(FAILED(hr) || pWebBrowser == NULL) return FALSE;


 CString strAddress = pAddress;


 // Navigate()에 필요한 인자들을 초기화한다
 VARIANT vtFlags, vtTarget, vtPostData, vtHeader;
 ::VariantInit(&vtFlags);
 ::VariantInit(&vtTarget);
 ::VariantInit(&vtPostData);
 ::VariantInit(&vtHeader);


 // 웹브라우저를 화면에 보이게 한다
 pWebBrowser->put_Visible(VARIANT_TRUE);


 // 사이트를 연다
 hr = pWebBrowser->Navigate(strAddress.AllocSysString(), &vtFlags, &vtTarget, &vtPostData, &vtHeader);

 // 웹브라우저 인터페이스의 참조 횟수를 줄인다
 pWebBrowser->Release();


 return SUCCEEDED(hr);
}