CppWebBrowser - neues Fenster abfangen (NewWindow2)



  • Hallo zusammen...

    Ich hab ein Problem bei der CPPWebbrowser-Kompo. Und zwar möchte ich das Öffnen eines neuen Browserfensters abfangen und in einer neuen Browser-Komponente öffnen. Theoretisch kein Problem, im NewWindow2-Eventhandler fängt man das ab und gibt das IDispatch-Interface zurück....

    void __fastcall TfrmBrowser::CppWebBrowser1NewWindow2
    (TObject *Sender, LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel)
    

    ... und zwar in ppDisp...
    NUR...wie? bzw. was geb ich da zurück, wie komme ich von meiner Browser-Komponente auf den Zeiger für IDispatch? Das check ich nich ganz...
    Ich habs auch schon über CppWebBrowser->Application->QueryInterface versucht, komm aber genauso wenig weiter. Oder reicht gar ein "einfacher" typcast von TCppWebBrowser* zu IDispatch** ?
    Ich hoff, das war nicht zu wirre und jemand kann mir helfen, schonmal danke im Voraus.



  • In der Tat ein interessantes Problem, welches folgendermaßen zu lösen ist:

    void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,
          LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel)
    {
    *ppDisp=CppWebBrowser2->Application;
    }
    

    Wobei die "Application" property folgendes ist:

    typedef System::DelphiInterface< IDispatch > _di_IDispatch;
    __property _di_IDispatch Application = {read=GetIDispatchProp, index=200};
    
    Description
    
    Use Application to access the interface for the application containing the WebBrowser control.
     If the application does not have an Automation interface, or if the interface is not accessible,
     Application provides access to the Automation interface of the Web browser control.
    

    Du belegst also den Parameter ppDisp mit dem Interface des 2ten CppWebBrowser und nach dem Aufruf der Methode wird das Popup an den zweiten Browser geleitet.

    Wenn du das ganze machst um das Popup zu verbergen, das ginge mit *Cancel=true;

    MfG
    Michael

    Edit: Zu lange "Code" Zeile 😉

    [ Dieser Beitrag wurde am 10.02.2003 um 09:34 Uhr von TripH editiert. ]



  • Jo ich danke dir.
    Genau das hab ich gesucht

    *ppDisp=CppWebBrowser2->Application;

    Allein, es scheiterte am "wie" 😉

    Gruß, Postman


Anmelden zum Antworten