Callback COM Internet Explorer



  • Hi Leute,

    ich beschäftige mich momentan ein wenig mit COM, habe das Problem das ich keine Ahnung habe wie ich einen Status Callback vom IE bekommen soll wenn z.B. ein Refresh ausgeführt wird.

    Den Connectionpoint habe ich mir schon geholt nur wie definiere ich die Callbacks?
    pIConnectionPointContainer->FindConnectionPoint(DIID_DWebBrowserEvents2,&pIConnectionPoint);

    Ich habe irgendwas gelesen, das man da spezielle MessageMaps eintragen muss, aber wie? Ich möchte keine Controls verwenden sondern direkt mit dem IE kommunizieren.
    Das hab ich bis jetzt.

    Danke!

    void CTestDlg::OnButton() 
    {
    	IUnknown *pIUnknown;
    	IDispatch *pIDispatch;
    	IConnectionPointContainer *pIConnectionPointContainer;
    	IConnectionPoint* pIConnectionPoint;
    
    	IWebBrowser2 *pIWebBrowser2;
    	HRESULT r;
    
    	CLSID CLSID_InternetExplorer;
    	CLSIDFromProgID(L"InternetExplorer.Application", &CLSID_InternetExplorer);
    
    	CoInitialize(NULL);
    
    	//CoGetClassObject(CLSID_InternetExplorer,CLSCTX_INPROC_SERVER,NULL,IID_IUnknown,(void**) &pIUnknown);
    	CoCreateInstance(CLSID_InternetExplorer,NULL,CLSCTX_ALL,IID_IUnknown,(void**) &pIUnknown);
    	pIUnknown->QueryInterface(IID_IWebBrowser2,(void**)&pIWebBrowser2);
    	pIUnknown->QueryInterface(IID_IDispatch,(void**)&pIDispatch);
    	pIUnknown->QueryInterface(IID_IConnectionPointContainer,(void**)&pIConnectionPointContainer);
    	pIUnknown->Release();
    	IEnumConnectionPoints* pPoint;
    	pIConnectionPointContainer->EnumConnectionPoints(&pPoint);
    
    	COleVariant vUrl="http://www.c-plusplus.net";
    
    	ULONG ulref;
    	DWORD dwCookie;
    
    	ulref=pIWebBrowser2->AddRef();
    	pIConnectionPointContainer->FindConnectionPoint(DIID_DWebBrowserEvents2,&pIConnectionPoint);
    	r=pIConnectionPoint->Advise(pIUnknown,&dwCookie);
    
    	long *pwndIE= new long;
    	r=pIWebBrowser2->get_HWND(pwndIE);
    	HWND hwndIE = (HWND) pwndIE;
    	::BringWindowToTop(hwndIE);
    
    	long* plong= new long;
    	r=pIWebBrowser2->get_Height(plong);
    	pIWebBrowser2->put_Visible(TRUE);
    	r=pIWebBrowser2->Navigate2(vUrl,NULL,NULL,NULL,NULL);
    	r=pIWebBrowser2->GoSearch();
    	r=pIWebBrowser2->put_MenuBar(FALSE);
    	r=pIWebBrowser2->put_AddressBar(FALSE);
    	r=pIWebBrowser2->put_Resizable(FALSE);
    	r=pIWebBrowser2->put_Offline(FALSE);
    	r=pIWebBrowser2->put_StatusText(FALSE);
    	r=pIWebBrowser2->put_ToolBar(FALSE);
    	r=pIWebBrowser2->put_StatusBar(FALSE);
    	pIWebBrowser2->Release();
    
    	CoUninitialize();
    	delete plong;
    	delete pwndIE;
    }
    

Anmelden zum Antworten