Question

Je développe actuellement un bouton de barre d'outils IE en C # censé pouvoir obtenir le contenu de l'onglet actuel et travailler avec elle. Cependant, chaque fois que le bouton est cliqué, la fonction iobjectwithsite.setsite est appelée (mon code sera affiché à la fin) et renvoie l'erreur suivante:

Impossible de lancer un objet COM de type 'Système .__ ComObject' to Interface Type Shdocvw.iwebrowseer2 '. Cette opération échoué parce que l'appel de QueryInterface sur le composant COM pour le Interface avec IID "

La fonction fonctionne correctement lorsqu'un site est chargé, mais ne jette que cette erreur lorsque le bouton de la barre d'outils est cliqué. Comme indiqué précédemment, la fonction SetSite est appelée, puis la fonction iolecommandtarget.exec est appelée.

Donc, je suppose que ma question est la suivante: qu'est-ce que je jette l'objet qui est transmis dans la fonction SetSite afin que je puisse accéder au document sur l'onglet que Internet Explorer a actuellement ouvert?

Mon code correspondant actuel pour ces deux fonctions est la suivante:

int IObjectWithSite.SetSite(object site)
{
    String display = "";

    try { browser = (IWebBrowser2)site;}
    catch (Exception e) { display += e.Message + "\r\n"; }

    System.Windows.Forms.MessageBox.Show(display);

    return 0;
}


int IOleCommandTarget.Exec(IntPtr pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
{
    if (form == null)
    {
        form = new SomeForm();
        form.InputText = "";
    }
    form.ShowDialog();
    return 0;
}

Merci d'avance.

Était-ce utile?

La solution 2

The Exec function calls SetSite before actually executing. In order to work around this and still have the Exec function be able to access information about the browser, the SetSite and GetSite functions should exist in a separate class that the Exec function accesses.

Autres conseils

the de manière documentée àQuery iWebBrowser2 à partir du site de la barre d'outils Le site consiste à interroger iserviceProvider à partir du site, puis queryservice pour iid_iwebbrowserapp

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top