Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在网页上嵌入来自BHO的图像?_C#_Bho_Ieaddon - Fatal编程技术网

C# 如何在网页上嵌入来自BHO的图像?

C# 如何在网页上嵌入来自BHO的图像?,c#,bho,ieaddon,C#,Bho,Ieaddon,我有一个用C#编写的BHO库mybho.dll。我嵌入了一个资源文件“image.png”。我想在一些页面上显示此图像。根据我读到的,应该是这样的: <img src="res://mybho.dll/image.png"> 但是Internet Explorer找不到该图像。我试过这个,但没有成功: <img src="res://mybho.dll/#2/image.png"> 正确的方法是什么?您混淆了Win32资源和.NET程序集资源。“res:”协议

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

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

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

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


正确的方法是什么?

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

您有两个选择:

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

  • 您还可以实现一个异步可插拔协议处理程序。假设您要实施新的协议方案:julien://image.png'. 在HKCR\PROTOCOLS\Handler\julien注册它,并实现IInternetProtocol(以及其他一些协议)。这不是一项很容易的任务(做过一次——犯错误的机会很多)