IE7 intergriert in eigenes Programm



  • Hallo Geeks und Freaks xD

    Ich hatte mal ein Beispiel gesehen wo derjenige den IE
    in sein Prog eingebaut hatte, d.h: man habe Window"blabla" als Parent vom Internet Exploer. Sobald ne Site aufgerufen wurde, wird auch dem IE-Style entsprechend die Site im WIndow"blabla" angezeigt.

    ALso was ich mir bis jetzt dachte/testete:

    -steuern werde ich den IE per COM.

    verbleibende Fragen Probleme:

    -wie bau ich das IE Window volle Fenster in mein eigenes Window ein(könnte ich dann auch theoretisch das Childwnd (also zb. nur den ausgabe bereich des IE´s ohne leisten etc)einbauen?)

    -wenn ich per COM aufrufe(unten der Code), ensteht ja ein neues Fenster/Instanz des IE´s, kann ich das auch irgendwie vermeiden?? oder bzw den IE in einen Zustand versetzen indem er Unsichtbar ist, aber funktioniert, bzw daten empfängt

    CLSID clsid;
    	LPUNKNOWN punk=NULL;
    	IWebBrowser2 *pWB = NULL;
            OleInitialize (NULL);
    	CLSIDFromProgID (OLESTR("InternetExplorer.Application"), &clsid);
    	CoCreateInstance (clsid, NULL, CLSCTX_SERVER, IID_IWebBrowser2, (LPVOID *) &punk);
    	punk->QueryInterface (IID_IWebBrowser2, (LPVOID *) &pWB);
    	punk->Release();
    	pWB->put_Visible (TRUE);
    

    vielen dank für eure hilfe 😉



  • Wenn brauchst du keine weitere hosting-tricks, mit atl.dll geht's eifach:

    #define _ATL_DLL  // use atl.dll instead static libraries
    #define _ATL_DLL_IMPL
    
    #include <atl\\atldef.h>
    #include <atl\\atliface.h>
    //#include <mshtml.h>
    #include <exdisp.h>
    #pragma comment(lib,"atl.lib")
    
    GUID _IID_IAxWinHostWindow = {0xB6EA2050, 0x48A, 0x11D1, 0x82, 0xB9, 0x0, 0xC0, 0x4F, 0xB9, 0x94, 0x2E};
    
    HRESULT CreateBrowser(HWND hwndParent, IWebBrowser2 **ppv)
    {
    	OleInitialize(0);
    	HRESULT hr = E_FAIL;
    
    	if (AtlAxWinInit())
    	{
    		IUnknown *atl;
    		if (!AtlAxCreateControl(L"http://www.c-plusplus.net/", hwndParent, 0, &atl))
    		{
    			IAxWinHostWindow *ax;
    			if (!atl->QueryInterface(_IID_IAxWinHostWindow, (void**)&ax))
    			{
    				hr = ax->QueryControl(IID_IWebBrowser2, (void**)ppv);
    				ax->Release();
    			}
    			atl->Release();
    		}
    	}
    //	OleUninitialize();
    	return hr;
    }
    

    Mit AtlAxCreateControl{Lic} kannst du jede ActiveX erstellen.

    Oder suche nach CWebPage in codeproject.com. Es ist viel besser als dieses ATL.



  • sapero schrieb:

    Mit AtlAxCreateControl{Lic} kannst du jede ActiveX erstellen.

    Oder suche nach CWebPage in codeproject.com. Es ist viel besser als dieses ATL.

    viele dank für deine antwort, nach CWebPage habe ich auch gesucht danke xD


Anmelden zum Antworten