经典问题!如何让webbrowser显示流中的Htm文件(内嵌图片)?分全发了!(145分)

R

rejoise

Unregistered / Unconfirmed
GUEST, unregistred user!
我把a.htm,b.htm,1.jpg三个文件做为资源文件打包进Exe里

其中a.htm页面中有图片1.jpg ,语句如下 <img src="1.jpg">
还有一个超连接<a href="b.htm">bbbbb</a>

使用时先释放文件流,然后用webbrowser载入流a.htm
现在的问题是载入的流a.htm没有相对路径,图片地址变成了
abount:blank1.jpg,页面图片显示不出来,而且点击超连接也找不到b.htm

请问高手,如何在内存中处理这些问题,我不想释放临时文件到磁盘里
我想通过建立内存虚拟盘,但不知如何操作。有好的方法吗,请高手指教!

另外,可以看看微软的帮助文件chm是如何做的,它也应该是将htm文件打包然后释放
页面地址是这样的
mk:mad:MSITStore:E:/123chm::/123.htm
mk:mad:MSITStore:E:/123chm::/456.htm
不知道微软怎么做的,请高手出招,千恩万谢!
 
根本无需先释放文件流,然后用webbrowser载入流a.htm
直接用IE4以上版本即支持的RES协议
比如你a.htm,b.htm,1.jpg三个文件做为资源文件打包进Exe里分别为1,2,3
那么你要看a.htm则用
WebBrowser1.Navigate(Format('RES://%s/1', [Application.ExeName]))
 
我的目的主要是想动态的生成一个exe文件
如果作为资源文件,我可以在外面动态的替换exe程序里的资源文件吗?
我如果不作为资源文件,而是将几个文件合并到一个exe文件后边,
地址我是知道的,使用时我可以取出文件流
用res协议就没用了,请高手再说说,谢谢!
 
一定是非 htm 文档不可吗?要是网页文件先做成 mht 的格式,问题就简单得多了。
 
试一试在你释放流后,调入webbrowser之前,在你的htm里面加上<BASE URL=...>标记
指向你的exe所在目录
 
各位感兴趣的给我提一下吧,谢谢!
 
用命名空间就可以做到此问题了,很多电子书籍都是这么做的
 
接受答案了.
 
顶部