9
votes

Impossible d'ajouter "C: \ Windows \ System32 \ shdocvw.dll" à mon projet

J'utilise vs 2010 Ultimate.

J'essaie d'ajouter "shdocvw.dll" aux références de mon projet en cliquant avec le bouton droit de la souris sur références -> Ajouter une référence ... , puis cliquez sur Parcourir et de naviguer sur "C: \ windows \ system32 \ shdocvw.dll", mais quand je clique sur le bouton ajouter rien ne se passe du tout. La boîte de dialogue ne ferme pas même.

Une idée que puis-je me tromper?

J'ai essayé de redémarrer vs mais j'ai continué à avoir ce problème.


1 commentaires

Y a-t-il au moins un moyen de le faire manuellement?


3 Réponses :


1
votes

C'est une demande malheureusement commune que j'ai vue auparavant.

Vous ne pouvez pas l'ajouter comme une référence. Vous devez l'ajouter sous la forme d'un élément de boîte à outils, déposez-le dans un formulaire, puis de votre oncle de Bob ...

C'est une particularité!

Instructions complètes ici: http://www.codeproject.com/kb/miscctrl/ WebBrowserEx.aspx


0 commentaires

2
votes

Le problème est que shdocvw.dll n'est pas un assemblage .NET, c'est à la fois une DLL Win32 normale et un contrôle ActiveX, mais pas un assemblage. Les seules choses que vous pouvez ajouter sous forme de références à un projet C # sont des assemblages .NET.

OK, alors cela mendie la question, pourquoi voulez-vous ajouter une référence à shdocvw.dll à un projet C #? Probablement parce que vous souhaitez utiliser l'interface ActiveX vers Internet Explorer pour inclure un navigateur Web dans votre application.

Si, donc, si vous écrivez une application Formulaires Windows, vous devez utiliser le contrôle webForms WebBrowser , et si vous écrivez une application WPF, vous devez utiliser le webrowser wpf webbrowser < / code> contrôle. Voici les instructions pour les formulaires Windows:


0 commentaires

20
votes

Dans votre solution C #, si vous ajoutez une référence au composant COM nommé "Commandes Internet Microsoft Internet", vous devriez pouvoir accéder à l'espace de noms SHDOCVW à partir d'une application C # Console, sans avoir à faire quoi que ce soit inhabituel.

une fois Je l'ai fait (dans vs 2008), j'ai ensuite pu utiliser shdocvw.shellwindows, shdocvw.iwebrowser2, et ainsi de suite. Par exemple: xxx

EDIT: Lorsque vous utilisez VS 2012 / .NET 4.x, vous pouvez utiliser l'approche ci-dessous, pour contourner l'erreur "Type interopt 'shdocvw. Shellwindowsclass 'ne peut pas être intégré. " xxx

Pour plus d'informations sur le problème du VS 2012, consultez cette réponse:

C# Comment obtenir l'URL actuelle de l'IE?


4 commentaires

J'ai finalement essayé cela et semble travailler. Ce serait la réponse réelle à ma question ... après 6 mois!


Cela ne fonctionne pas maintenant. :( J'utilise vs 2012 et cela a dit: Erreur 4 type interopt 'shdocvw.shellwindowsclass' ne peut pas être intégré. Utilisez l'interface applicable à la place.


JAYSON, merci pour l'information - j'ai mis à jour la réponse pour vs 2012.


Pas lié à cette réponse, mais je suis arrivé ici via votre message de blog à ce sujet. Vous voudrez peut-être mettre à jour le message du blog avec la solution VS2012 Correction Blog.nagwise .org / 2012/03 / ...