我正在使用C#Express 2010运行Vista Home Premium
当IE加载页面时,我无法将C#BHO中的WIN32资源图像加载到DOM中。我很感激帮助确定问题所在以及如何解决问题。
我从这里找到的代码开始:(对于剩下的链接感到抱歉。我刚刚开始在这里,没有足够的声誉发布多个链接。我把它们放在代码块中,这样你就可以看到我收到了来自的信息
http://www.codeproject.com/Articles/19971/How-to-attach-to-Browser-Helper-Object-BHO-with-C
我可以安装代码,IE可以在加载时在页面上执行javascript。我有一个想要添加到DOM的图像。目前我用来尝试和添加图像的代码是:
string img = "<img id=\"BHOimg\" src=\"res://BHOHelloWorld.dll/#2/LOGO.bmp\">";
document.body.insertAdjacentHTML("afterBegin", img);
其中BHOHelloWorld.dll是BHO,此代码来自。使用这种方法,图像节点被添加到DOM,但图像是红色的X.一旦使用PE Explorer编译,我查看了BHOHelloWorld.dll,并且可以看到logo.bmp资源。我可以看到图像这一事实让我相信src属性是错误的。值得注意的是,当我使用PE Explorer时,图像名称是LOGO.BMP而不是LOGO.BMP
BHOHelloWorld是利用以下步骤编制的:
从这里开始:
http://stackoverflow.com/questions/9156177/how-to-embed-an-image-on-a-web-page-from-a-bho
我创建了一个包含以下内容的RC文件(nativeresources.rc):
logo.bmp位图“logo.bmp”
然后我添加了
“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ rc.exe”/ r“../../ nativeresources.rc”
到我的项目的预建事件。
我还添加了
<Win32Resource>nativeresources.res</Win32Resource>
根据此链接的建议到我的csproj文件
http://www.calvert.ch/maurice/2009/08/27/displaying-images-using-the-res-protocol-from-a-ie-bho/
我在命令行上使用csc.exe编译我的BHOHelloWorld项目,因为MS告诉我必须使用/ win32res标志并且VS IDE不支持它。
http://msdn.microsoft.com/en-US/library/8f2f5x2e(v=vs.80).aspx
要获得正确的csc.exe命令,我将C#Express输出更改为详细和编译。然后我将csc命令从输出窗口复制到命令行并添加了
/win32res:nativeresources.res
一切似乎都在编译和嵌入,因为rc.exe会创建一个.res文件,而不会抛出任何错误。 res文件只略大于图像文件,一旦我构建了BHOHelloWorld.dll文件,我就可以用PE Explorer打开它,可以看到有问题的图像,尽管名称略有不同LOGO.BMP 。我不确定这是否是PE Explorer的工件,或者我编译/嵌入的方式有问题。无论如何,我已经尝试替换图像src属性以反映不同的名称而没有运气。我现在已经花了几天时间而感到困惑。任何帮助将不胜感激。
我也看过这些没有真正的运气:
http://stackoverflow.com/questions/20266564/how-to-add-image-tag-in-bho-using-c
http://stackoverflow.com/questions/12962563/bho-accessing-resource-in-managed-dll
http://stackoverflow.com/questions/8739767/ie-image-is-displayed-in-localhost-but-not-onlinebho