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 (実際には res: が実装されている urlmon.dll) はイメージを見つけることができません。

次の 2 つのオプションがあります。

  1. おそらく最も簡単な方法は、Win32 リソース (*.res ファイル) を作成し、マネージ アセンブリに埋め込むことです。まず、イメージを指す *.RC ファイルを作成します。よくわかりませんが、最初に PNG を BMP 形式に変換する必要があると思います。次に、RC ファイルをバイナリ リソースにコンパイルします (RC - リソース コンパイラを使用)。最後に、マネージド アセンブリをビルドするときに、/win32res スイッチを使用して Win32 リソースを追加します。

  2. Asynchronous Pluggable Protocol ハンドラを実装することもできます。新しいプロトコル スキームを実装するとします: julien://image.png'。HKCR\PROTOCOLS\Handler\julien に登録し、IInternetProtocol (および他のいくつかのプロトコル) を実装します。これは非常に簡単な作業ではありません (一度やっただけで、間違いを犯す可能性はたくさんあります)。

于 2012-02-13T13:30:19.387 に答える