command-line - 如何使用 vbc 命令行编译器(无 IDE)像 shdocvw 一样引用 COM 库?

标签 command-line compiler-construction com reference vbc

这个问题的基础来自 support.microsoft.com 上的这个教程: http://support.microsoft.com/kb/176792

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 的了解太少,不知道我是做错了还是不可能.

最佳答案

您必须先运行 Tlbimp.exe 实用程序。这是从嵌入在 shdocvw.dll 中的类型库生成互操作库的工具,通常在您在 IDE 中添加引用时自动完成。它会生成 interop.shdocvw.dll,您需要使用/reference 选项传递该文件。

关于command-line - 如何使用 vbc 命令行编译器(无 IDE)像 shdocvw 一样引用 COM 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099031/

相关文章:

c# - 从 C# 访问 COM 对象的最佳方式

c++ - IntelliSense 显示 CComPtr<T> 的不同函数集,具体取决于我使用的是点运算符还是箭头运算符

curl - 为什么cURL请求在ZSH中的每个请求都返回百分号(%)?

macos - osx - sudo 密码执行

c++ - LLVM 别名分析器奇怪的结果

php - 如何将绝对系统路径转换为 ​​IShellFolder?

windows - 如何使用命令终止上次打开的 Internet Explorer 窗口?

linux - 如何在bash中将一个txt文件中的文件名重命名为另一个txt文件中的文件名?

c++ - 调用析构函数的顺序和要点

c - Bison:当我尝试在函数语法规则中添加操作时,出现段错误 11