ActiveX/Web Browser Pointer얻기
ActiveX에서 호출한 웹 브라우저의 포인터 얻기
IWebBrowser2* CxCtrl::GetWebPointer()
{
    HRESULT hr;
    IOleContainer* pIContainer;
    IWebBrowser2* pIWeb;
    IServiceProvider *pISP;
    
    // get IOleClientSite interface pointer.

    LPOLECLIENTSITE pIClientSite = GetClientSite();
    
    // get IOleContainer interface poineter.

    hr = pIClientSite->GetContainer(&pIContainer);
    if( hr != S_OK )
    {
        pIClientSite->Release();
        return NULL;
    }
    
    // get IServiceProvider interface pointer.

    hr = pIClientSite->QueryInterface( IID_IServiceProvider, (void **)&pISP );
    if( hr != S_OK )
    {
        pIContainer->Release();
        pIClientSite->Release();// access violation when terminated.
        return NULL;
    }

    // get IWebBrowser2 interface pointer.

    hr = pISP->QueryService( IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pIWeb );
    if( hr != S_OK )
    {
        pIContainer->Release();
        pIClientSite->Release();
        pISP->Release();
        return NULL;
    }
    
    // release interface.

    pIContainer->Release();
    pIClientSite->Release();
    pISP->Release();

    return pIWeb ;
}

void CxCtrl::OnTest()
{
    IWebBrowser2* pIWeb = GetWebPointer();
    
    if( pIWeb ){
        BSTR bstrURL = NULL
        CString strURL;
        pIWeb->get_LocationURL( &bstrURL );
        if( bstrURL != NULL )
        if( bstrURL != NULL )
        {
            ::WideCharToMultiByte(  CP_ACP,
                                    0,
                                    bstrURL,
                                    -1,
                                    strURL.GetBuffer( MAX_PATH ),
                                    MAX_PATH,
                                    NULL, NULL );

            ::SysFreeString( bstrURL );
            strURL.ReleaseBuffer();     
        }
    }
    if( pIWeb ) pIWeb->Release();
    
}



ID
Password
Join





- 전 이런 놈입니다.

격언> 마음을 수양하는 데 욕망을 줄이는 것보다 더 좋은 것은 없다. (맹자)

Recent Changes

D  Echoes Of War(The... @ 2012-05-18 [03:44 pm] by windlesszone
D  Diablo3 @ 2012-05-15 [04:49 pm] by windlesszone
D  Diablo3/story/wizard @ 2012-05-15 [04:48 pm] by windlesszone 4 changes
D  Diablo3/story/wit... @ 2012-05-15 [04:16 pm] by windlesszone
D  Diablo3/story/monk @ 2012-05-15 [04:14 pm] by windlesszone





Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-04-03 13:06:36
Processing time 0.0502 sec