3

我有一个用 C# 编写的 BHO 库 mybho.dll。我嵌入了一个资源文件“image.png”。我想在某些页面上显示此图像。根据我阅读的内容,它应该是这样的:

<img src="res://mybho.dll/image.png">

但 Internet Explorer 找不到该图像。我试过这个没有成功:

<img src="res://mybho.dll/#2/image.png">

正确的方法是什么?

4

1 回答 1

2

您混淆了 Win32 资源和 .NET 程序集资源。“res:”协议处理程序从 DLL 返回 Win32 资源。.NET 资源不是Win32 资源,因此 IE(实际上是 urlmon.dll,其中实现了 res:)无法找到您的图像。

你有两个选择:

  1. 最简单的方法可能是创建一个 Win32 资源(*.res 文件)并将其嵌入到托管程序集中。首先,创建一个指向您的图像的 *.RC 文件。我不确定,但我认为您必须先将 PNG 转换为 BMP 格式。然后,将 RC 文件编译为二进制资源(使用 RC - 资源编译器)。最后,在构建托管程序集时,使用 /win32res 开关添加 Win32 资源。

  2. 您还可以实现异步可插入协议处理程序。假设你想实现一个新的协议方案:julien://image.png'。在 HKCR\PROTOCOLS\Handler\julien 注册它,并实现 IInternetProtocol(和一些其他协议)。这不是一件容易的事(做过一次 - 有很多机会犯错误)。

于 2012-02-13T13:30:19.387 回答