2019. 1. 2. 19:52

How to Cleanly Destroy WebBrowser Control

2013. 8. 12. 17:38

Get IE Tab Window Handle

Get  IE Tab Window Handle


http://social.msdn.microsoft.com/Forums/ie/ja-JP/df0fe7f2-0153-47d9-b18f-266d57ab7909/problems-with-modal-dialogs-and-messageboxes

I have problem that message box does not appear in case using IWebBrowser2-HWND
I solved this problem by using tab window handle

#include <shlguid.h>

IServiceProvider* pServiceProvider = NULL;
if (SUCCEEDED(pWebBrowser2->QueryInterface(
                    IID_IServiceProvider, 
                    (void**)&pServiceProvider)))
{
    IOleWindow* pWindow = NULL;
    if (SUCCEEDED(pServiceProvider->QueryService(
                    SID_SShellBrowser, 
                    IID_IOleWindow,
                    (void**)&pWindow)))
    {
        HWND hwndBrowser = NULL;
        if (SUCCEEDED(pWindow->GetWindow(&hwndBrowser)))
        {
            // hwndBrowser is the handle of TabWindowClass
        }

        pWindow->Release();
    }
 
    pServiceProvider->Release();
}





2012. 8. 1. 16:04

dynamic create activeX (javascript)

  1. create
    1. new ActiveXObject 를 이용한다.
    2. var object = new  ActiveXObject(progid);
  2. link event
    1. 해당 activeX 가 IProvideClasInfo2 와 IConnnectionPoint 가 구현되어 있어야 한다.
    2. eval("function object::event1( value ) { event_handler(value); }");


2012. 8. 1. 15:57

ATL with IE(HTML)


  1. Implement IObjectSafety
    1. 미 구현 시 script 구간에서 경고 창이 뜬다.
    2. 구현 방법
    3. public IObjectSafetyImpl<Ctest, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>,

      COM_INTERFACE_ENTRY(IObjectSafety)

  2. Implement IObjectWithSite
    1. javascript 에서 new ActiveXObject 로 구현 가능하도록 하려면 
    2. 구현 방법
      1. wizard 창에서 선택 가능
  3. Implement IProvideClassInfo2
    1. web page 에서 Event catch 를 위해서 (IConnectionPoint 도 구현해야 된다. wizard 에서 선택 가능)
    2. 구현 방법
      1. public IProvideClassInfo2Impl<&CLSID_<object_name>, NULL,
                                         &LIBID_<project_name>Lib>

         COM_INTERFACE_ENTRY(IProvideClassInfo)
           COM_INTERFACE_ENTRY(IProvideClassInfo2)

    3. url : http://support.microsoft.com/?id=200839>