2013-02-26 10 views
3

В основе этого вопроса исходит из этого учебника по support.microsoft.com: http://support.microsoft.com/kb/176792Как ссылаться на COM lib как shdocvw с помощью компилятора командной строки vbc (без IDE)?

To run the following code, it is necessary to add a reference to 
"Microsoft Internet Controls" (Shdocvw.dll) and "Microsoft HTML Object 
Library" (Mshtml.dll) to the Visual Basic project: 
Dim SWs As New SHDocVw.ShellWindows 
Dim IE As SHDocVw.InternetExplorer 

Это прекрасно работает в Visual Studio 2010, но это, кажется, полагаться на какой-то закулисный магии, что я не может дублировать использование компилятора прямой командной строки vbc.

Очевидно, что нет диалогового окна «Добавить ссылку» для компилятора командной строки. Я наивно попытался добавить:

/reference:"C:\windows\system32\shdocvw.dll»

в командной строке, но это не помогло. В обоих случаях я получаю:

ошибка BC30002: Тип «SHDocVw.ShellWindows» не определен.

ошибка BC30002: Тип «SHDocVw.InternetExplorer» не определен.

Я успешно использовал shdocvw.dll, AKA Shell.Application, с других языков, таких как vbscript и autohotkey, но в настоящее время у меня слишком мало понимания VB.NET, чтобы узнать, делаю ли я это неправильно или это невозможно.

+0

Для справки, есть окно сборки, которое показывает команды, которые запускает IDE. Добавьте ссылки на проект в VS, постройте и посмотрите, как выглядит созданная им командная строка. : P – cHao

+0

Между прочим, это «/ link» s to Interop.SHDocVw.dll, которое является частью волшебства, о котором я говорил выше :) У меня не было бы этой DLL в голой папке с моим источником .vb, в сценарии только для командной строки. – amonroejj

ответ

2

Сначала вам нужно запустить утилиту Tlbimp.exe. Это инструмент, который генерирует библиотеку interop из библиотеки типов, встроенной в файл shdocvw.dll, обычно выполняемой автоматически при добавлении ссылки в среду IDE. Он создает interop.shdocvw.dll, тот, который вам нужно передать с опцией/reference.

+0

Действительно, я пробовал это, и это сработало. Мне любопытно, почему tlbimp.exe не включен в C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 вместе с vbc.exe. Я нашел копию в C: \ Program Files \ Microsoft SDK \ Windows \ v7.0A \ bin. – amonroejj

+0

Это инструмент построения, который полезен только программисту. И поэтому живет в каталоге SDK. –

+0

Можно сказать то же самое о самом vbc.exe :) – amonroejj