Quantcast
Channel: Internet Explorer Web Development forum
Viewing all articles
Browse latest Browse all 3527

Destroy parent window of a webbrowser control causes a crash, How to close web browser host window safely?

$
0
0

I have implemented an IE control by deriving CAxwindow,and implementing DWebBrowserEvents2 interface, It's ok to navigate URLs, but when I want to destroy the parent window of the ID control, I will casually get a crash, especially after the js call window.external.OnXXX method.  I have done the following things before destroy the parent window like the following:

CComPtr<IWebBrowser2> spWebBrowser2;
 HRESULT hRet = QueryControl(IID_IWebBrowser2, (void**)&spWebBrowser2);
 if (FAILED(hRet))
  return FALSE;
 //hRet = spWebBrowser2->Stop();  //crash either when uncomment this line.

 VARIANT url;
 url.vt=VT_BSTR;
 url.bstrVal=W2BSTR(L"about:blank");

 hRet = spWebBrowser2->Navigate2(&url, NULL, NULL, NULL, NULL);
 hRet = spWebBrowser2->Quit();

hRet = IDispEventSimpleImpl<1, CMyIEWndCtrl, &DIID_DWebBrowserEvents2>::DispEventUnadvise(spWebBrowser2, &DIID_DWebBrowserEvents2);

spWebBrowser2.Release();

DestroyWindow();  //destroy its parent window.

keep crashing at:

   if(!PreTranslateMessage(&m_msg))
   {
    ::TranslateMessage(&m_msg);
    ::DispatchMessage(&m_msg);
   }

msg=0x00008002 

  message 0x00008002 

  wparam 0

  lparam 0

call stack:

  ieframe.dll!7465210f()  
  [Frames below may be incorrect and/or missing, no symbols loaded for ieframe.dll] 
  ieframe.dll!747fead4()  
  ieframe.dll!747fe070()  
  jscript9.dll!0fa95c92()  
  jscript9.dll!0fa95bee()  
  jscript9.dll!0fa95bd7()  
  mshtml.dll!6d40ed0a()  
  mshtml.dll!6d583d58()  
  mshtml.dll!6d5812b7()  
  mshtml.dll!6d58b1a1()  
  mshtml.dll!6d58b13d()  
  mshtml.dll!6da5c668()  
  mshtml.dll!6dd64dc8()  
  user32.dll!75e662fa()  
  user32.dll!75e66d3a()  
  user32.dll!75e66ce9()  
  user32.dll!75e677d3()  
  user32.dll!75e6789a()  
    my.exe!WTL::CMessageLoop::Run()  Line 989 + 0xf bytes C++

I guess there are some IE internal code is running after destroy the parent window.  there isn't running js code.  I do want to know how to quit safely ?  any input will be highly appreciated. 


I am developing applications for Windows Mobile and Android. I like my job.



Viewing all articles
Browse latest Browse all 3527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>