Webbrowser::Webbrowser(void): _refNum(0), //_rcWebWnd(0), _bInPlaced(false), _bExternalPlace(false), _bCalledCanInPlace(false), _bWebWndInited(false), _pOleObj(NULL), _pInPlaceObj(NULL), _pStorage(NULL), _pWB2(NULL), _pHtmlDoc2(NULL), _pHtmlDoc3(NULL), _pHtmlWnd2(NULL), _pHtmlEvent(NULL) { ::memset( (PVOID)&_rcWebWnd,0,sizeof(_rcWebWnd)); HRTEST_SE( OleInitialize(0),L"Failed in Initialize Ole"); HRTEST_SE( StgCreateDocfile(0,STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_DIRECT | STGM_CREATE,0,&_pStorage),L"ERROR:StgCreateDocfile"); HRTEST_SE( OleCreate(CLSID_WebBrowser,IID_IOleObject,OLERENDER_DRAW,0,this,_pStorage,(void**)&_pOleObj),L"Create Ole Failed"); HRTEST_SE( _pOleObj->QueryInterface(IID_IOleInPlaceObject,(LPVOID*)&_pInPlaceObj),L"Create OleInPlaceObject Failed"); GetWebBrowser2(); OleUninitialize(); RETURN: return; }
void YouTubeWebPageView::LoadVideo(const VideoInfo& info) { m_bLoaded = false; ATLTRACE(_T("%08x: LoadVideo: \"%s\" (%s)\n"), m_hWnd, info.Name(), info.Address()); m_iLastError = 0; CString cszHtml = GetHtmlTemplate(); cszHtml.Replace(_T("{..$address..}"), info.Address()); cszHtml.Replace(_T("{..$name..}"), info.Name()); cszHtml.Replace(_T("\r\n"), _T("\n")); // generate temp name CString cszTempFolder; GetTempPath(MAX_PATH, cszTempFolder.GetBuffer(MAX_PATH)); cszTempFolder.ReleaseBuffer(); CString cszFilename; GetTempFileName(cszTempFolder, _T("YTP"), 0, cszFilename.GetBuffer(MAX_PATH)); cszFilename.ReleaseBuffer(); // write to temporary file { FILE* fd = NULL; errno_t err = _tfopen_s(&fd, cszFilename, _T("wt")); ATLVERIFY(err == 0 && fd != NULL); USES_CONVERSION; fprintf(fd, T2CA(cszHtml)); fclose(fd); } // navigate to page CComPtr<IWebBrowser2> spWebBrowser2; HRESULT hr = GetWebBrowser2(spWebBrowser2); if (SUCCEEDED(hr)) { CString cszURL = _T("file:///") + cszFilename; cszURL.Replace(_T("\\"), _T("/")); CComBSTR bstrURL = cszURL; CComVariant varFlags(static_cast<int>(navNoHistory | navNoWriteToCache)); hr = spWebBrowser2->Navigate(bstrURL, &varFlags, NULL, NULL, NULL); } if (!m_cszHtmlFilename.IsEmpty()) DeleteFile(m_cszHtmlFilename); m_cszHtmlFilename = cszFilename; }
int CWebView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (__super::OnCreate(lpCreateStruct) == -1) return -1; #ifndef _DEBUG GetWebBrowser2()->put_Silent(VARIANT_TRUE); #endif // !_DEBUG OpenWebBrowser(); return 0; }
HRESULT GetHtmlDocument(CComPtr<IHTMLDocument2>& spDoc) { CComPtr<IWebBrowser2> spWebBrowser2; HRESULT hr = GetWebBrowser2(spWebBrowser2); CComPtr<IDispatch> spIDispatch; hr = spWebBrowser2->get_Document(&spIDispatch); if (FAILED(hr)) return hr; return spIDispatch.QueryInterface<IHTMLDocument2>(&spDoc); }