我有一个用C#编写的BHO库mybho.dll。我嵌入了一个资源文件“image.png”。我想在某些页面上显示此图像。根据我的阅读,它应该是这样的:
<img src="res://mybho.dll/image.png">
但Internet Explorer找不到该图像。我试过这个没有成功:
<img src="res://mybho.dll/#2/image.png">
这样做的正确方法是什么?
答案 0 :(得分:2)
您正在混淆Win32资源和.NET程序集资源。 'res:'协议处理程序从DLL返回Win32资源。 .NET资源是 NOT Win32资源,因此IE(实际上是urlmon.dll,其中res:已实现)无法找到您的图像。
您有两种选择:
最简单的方法可能是创建Win32资源(* .res文件)并将其嵌入到托管程序集中。首先,创建一个* .RC文件,指向您的图像。我不确定,但我认为你必须先将PNG格式转换为BMP格式。然后,将RC文件编译为二进制资源(使用RC - 资源编译器)。最后,在构建托管程序集时,使用/ win32res开关添加Win32资源。
您还可以实现异步可插入协议处理程序。假设你想实现一个新的协议方案:julien://image.png'。在HKCR \ PROTOCOLS \ Handler \ julien注册,并实施IInternetProtocol(和其他一些协议)。这不是一件非常容易的事(曾经做过一次 - 有很多机会犯错误。)