Webkit 的 .NET 包装器
我使用 WebKit .NET 包装器在 Visual Studio 2011 中创建了一个浏览器。但由于我是 C# 新手,我可能有一个奇怪的问题...
为什么我不能只使用: http:// /www.webkit.org/ 对于我的浏览器?如果这是不可能的,那么为 WebKit 创建 .NET 包装器会有多困难?以及如何...
I've created an browser in Visual Studio 2011 with the WebKit .NET wrapper. But since I'm new to C# I maybe have a strange question...
Why can't I just use: http://www.webkit.org/ for my browser? And if that's impossible, how hard would it be to create an .NET wrapper for WebKit?? And how...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为 Webkit 是用 C++ 编写的,而不是用 C# 编写的。需要一个翻译层来在 C# 的托管代码执行环境和 Webkit 中的非托管代码之间进行编组。这对于 Webkit 来说并不是特别困难,它支持 COM 自动化接口。 .NET 很好地支持了一些东西。
必要的起点是 Webkit 的类型库。这是程序集元数据的 COM 版本,它以语言中立的方式描述非托管 COM 接口类型。 .NET Tlbimp.exe 工具将类型库转换为 .NET 互操作库。在 Visual Studio 中很容易做到,您可以使用“项目 + 添加引用”、“浏览”选项卡并选择 Webkit.tlb 文件。它会自动生成 Webkit.Interop.dll 程序集,即 COM 接口的 .NET 版本。
正如您可能怀疑的那样,该接口并不是特别小。从那里,您可以编写隐藏接口复杂性的友好 .NET 包装器类,这是 SourceForge 项目。研究它以了解它如何使用该界面应该会很有启发。 .NET WebBrowser 控件以及 HtmlDocument 和 HtmlElement 类的工作方式完全相同,但适用于 IE。
Because Webkit was written in C++, not in C#. A translation layer is needed to marshal between the managed code execution environment of C# and the unmanaged code in Webkit. That's not particularly difficult for Webkit, it supports a COM automation interface. Something that .NET supports well.
The necessary starting point is the type library for Webkit. That's the COM version of assembly metadata, it describes the unmanaged COM interface types in a language neutral manner. The .NET Tlbimp.exe tool translates the type library into a .NET interop library. Easy to do in Visual Studio, you use Project + Add Reference, Browse tab and select the Webkit.tlb file. That automatically generates the Webkit.Interop.dll assembly, the .NET version of the COM interface.
As you might suspect, that interface is not particularly small. From there, you could write friendly .NET wrapper classes that hide the interface complexity, the tack taken by this SourceForge project. Studying it to see how it uses the interface should be enlightening. The .NET WebBrowser control and HtmlDocument and HtmlElement classes work the exact same way, but for IE.