|
在C++Builder中如何用“TCppWebBrowser”POST数据(1)
在C++Builder中如何用“TCppWebBrowser”POST数据 山注:我先介绍一下CppWebBrowser这个组件吧。实际上,BORLAND的这个组件是Microsoft Internet Control ActiveX控件的VCL组件形式的封装。如果你想获得更强大的功能, 呵呵,说不得,你得去研究“IHTMLDocument2”接口指针了。这个东西在BCB和Delphi 的帮助里都没有详细的说明,只能查MSDN了。当然,本文不涉及这个麻烦的东西。 摘要:这篇文章示范了如何利用“CppWebBrowser”组件的“Navigate”和“Navigate2”方法进行浏览和post数据。作者是Adam Vieweger. 这两个星期以来,我几乎撕光了我的头发!我想使用“TCppWebBrowser”组件(首先包含于Borland C++Builder 5 企业版中)写一个可以浏览网页并且允许用户向网页发送post数据的程序。这可真是郁闷了我好一段时间,因为“TCppWebBrowser”的文档非常少,而且能对我起到引导作用的文章也不多。 好,那我就卷起袖子开始干活了!我希望我的发现对你来说是有用的。 用“CppWebBrowser”实现浏览功能是非常简单的.有两个方法可以提供浏览的功能:“Navigate”和“Navigate2”: CppWebBrowser1->Navigate("http://www.inprise.com") “Navigate2”是对“Navigate”的扩展,但是实际上,这对我们来说无所谓 -- 在这篇文章中,我们可以使用这二中的任何一个。 如果你想了解更多“WebBrowser”组件的属性,方法和事件,请参阅MSDN:ASP?url=/workshop/browser/webbrowser/reference/Objects/WebBrowser.asp">http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/Objects/WebBrowser.asp 难题 Posting data非常难以破解.Microsof的组件需要数据通过一个“SAFEARRAY”结构体进行传递。问题就是所有的“Navigate2”参数都是“TVariant”类型的.我必须在“SAFEARRAY”和“TVariant”之间进行转换. 在Borland Community(山注:这就是Borland的开发者社区)里,我看到了一篇巨牛的教程,是讲在C++BUILDER中如何使用SAFEARRAYs的。如果你想获得更详细的信息,请参阅: SAFEARRAYs made easier (http://community.borland.com/article/0,1410,22016,00.html) 下面的代码示范了我研究的结果。“Navigate”需要它的TVariant是VB_ARRAY类型的并且指向一个SAFEARRAY.SAFEARRAY是由VT_UT1(一种无符号整型)类型元素组成的一维数组,并且它应该包含一个元素用以纪录要发送数据的字节数。
|