直接把.mht文件赋给webbrower ( 积分: 100 )

  • 主题发起人 主题发起人 HUAGUAN
  • 开始时间 开始时间
H

HUAGUAN

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中直接生成.mht格式的字符串赋给webbrower直接显示
 
我想在程序中直接生成.mht格式的字符串赋给webbrower直接显示
 
如果把mht生成一个临时文件,然后再付给webbrowser比较容易,如果是内存流付给webbrowser就比较难实现,不知道有没有高手做过,关注这个问题。
 
After very long sleeplessness, and googling, I found a way to load MHT
directly to the Webbrowser, without saving it to disk, at all.

All the images seem to render perfectly, and all comes from a Stream.

To use it, you have to use the Asynchronous Pluggable Protocol.
A sample is here:
http://www.euromind.com/iedelphi/app/namespacehandler.htm

With it, you can make a namespace, say myHTTP://www.mySite.com/ and it
works within your EXE file (available to your EXE ONLY). Then you
navigate to the myHTTP://www.mySite.com/sample.mht and then the
webbrowser uses the Asynchronouse Pluggable Protocol to provide it
with the MHT file. Once the event is fired you can provide the MHT to
it from a Memo, from a Stream which has MHT. Then the webbrowser will
navigate there. It's like a webbserver in your EXE!!! (Just an analogy).

Anyone not able to use it, I could be of some help (ajmalhamza at
gmail.com)

Thanks and keep the good working going.
Thanks for whoever started this dicussion, cause I've learned alot
from here.

Ajmal
London, UK
 
有流的方式,兄弟自己搜索一下先?我记不起来了
 
satanmonkey,感谢你的关心,不过我的E语实在太那个了,不知你所云很抱歉,不知能不能用中国话解释一下,在此谢过,
9903用临时文件我是实现了,我现在就是这样先用着,但总感觉不是好方法,但我想即然IE可以直接打开,他的COM一定有这样的方法,我想知道的是如何使用这些接口中的方法,希望各位大侠不吝赐教
 
放一段相关代码,从WEBBOWSER中直接存为MHT,感谢MSDN的TechnoFantasy
procedure WB_SaveAs_MHT(WB: TWebBrowser; FileName: string);
var
Msg: IMessage;
Conf: IConfiguration;
Stream: _Stream;
URL: widestring;
{ _Stream定义在ADODB_TLB单元.IMessage和IConfiguration接口代码来自cdosys.dll.
CDO_TLB产生过程:选择菜单PROJECT中的"Import Type Library", 然后选择"C:/WINDOWS/system32/cdosys.dll"
文件,按下"Create unit"按钮.}
begin
if not Assigned(WB.Document) then Exit;
URL := WB.LocationURL;

Msg := CoMessage.Create;
Conf := CoConfiguration.Create;
try
Msg.Configuration := Conf;
Msg.CreateMHTMLBody(URL, cdoSuppressAll, '', '');
Stream := Msg.GetStream;
Stream.SaveToFile(FileName, adSaveCreateOverWrite);
finally
Msg := nil;
Conf := nil;
Stream := nil;
end;
end; (* WB_SaveAs_MHT *)
 
怎么楼主你还没有实现吗?上面哪位英国大哥说的可行,我已经看过了,你打开那个网页下载demo看看就行了,代码并不复杂。
 
对不起,那位英国大哥的DEMO我也看过,只是我太笨,看不懂他在说什么,又是NAMESPACE又是COM转得我头晕,找了半天(仅半天,没仔细找)找不到我有用的东西,如果有哪位大侠可以从中找到一些我要的东西,麻烦帮我理一理,能象保存一样得到一个函数是最好的,在此先谢谢各位大侠了
 
名字空间看这里
http://www.euromind.com/iedelphi/app.htm
用名字空间要写个单独的dll的,不是一个函数可以搞定的。
 
晕又是一个E文网站,各位大侠,我是E文盲,各位大侠不要逗我好不好,我是有急用
 
用词霸翻着看,这方面的中文资料几乎没有的。
 
是个雅虎上的IE&Borwser社区,好东西不少,谢谢
 

Similar threads

回复
0
查看
1K
不得闲
回复
0
查看
815
不得闲
D
回复
0
查看
925
DelphiTeacher的专栏
D
D
回复
0
查看
880
DelphiTeacher的专栏
D
后退
顶部