shdocvw в управляемом C ++ - PullRequest
0 голосов
/ 27 мая 2011

Я пытаюсь использовать shdocvw в управляемой программе на C ++.Я прочитал COM-взаимодействие с использованием управляемого C ++ - CodeProject .Я использовал инструкции Как добавить ссылки на управляемый проект Visual C ++ для создания Interop.shdocvw.dll.Я переместил файл в каталог моего проекта.Я использую VS 2010 Professional.Я добавил:

#using "Interop.shdocvw.dll"

в мою программу.В моей программе:

SHDocVw::ShellWindows swList;

Я получаю ошибку:

ошибка C2653: 'SHDocVw': это не имя класса или пространства имен

У меня также естьпопытался использовать «использование пространства имен», но это тоже не работает.

Я не получаю сообщение об ошибке #using, поэтому он находит файл.Я предполагаю, что близок к тому, чтобы заставить его работать;что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 29 мая 2011

Я не могу себе представить, почему это не работает, кроме того, что что-то резко пошло не так, когда вы запустили утилиту tlbimp.exe. Там нет необходимости делать это, вы также можете сделать это с IDE.

Щелкните правой кнопкой мыши проект в окне обозревателя решений, Свойства, Общие свойства, Каркас и Ссылки. Нажмите кнопку Добавить новую ссылку. Откройте вкладку, перейдите к c: \ windows \ system32 \ shdocvw.dll. Теперь у вас не должно возникнуть проблем с использованием пространства имен SHDocVw. Устранение неполадок с View + Object Browser.

И не забывайте, что интерфейсы являются ссылочными типами, вам нужна шляпа:

 SHDocVw::ShellWindows^ swList;
0 голосов
/ 27 мая 2011

Начиная с VC ++ 2008, вы не должны создавать свою собственную сборку взаимодействия для shdocvw.dll - импортер библиотеки типов, как известно, не может правильно преобразовать многие сигнатуры (особенно сигнатуры событий), поэтому Microsoft начала поставлять вручную- переведенная сборка взаимодействия с платформой .NET в VS 2008 под названием Microsoft.mshtml.dll.

Итак, избавьтесь от Interop.shdocvw.dll и добавьте ссылку на Microsoft.mshtml.dll, содержимое которой находится в пространстве имен ::mshtml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...