关于OLE(150分)

K

Kiven

Unregistered / Unconfirmed
GUEST, unregistred user!
请问谁知道HomeSite是怎样把Windows的资源管理器和IE给嵌进去的?
最好能给个例子。
 
Microsoft 提供IE 3 的ActiveX的,所以只要在程序中嵌这么个东东就可以实现
IE 3的全部功能乐。
至于资源管理器,可以自己做一个呀,左边一个TTreeView,右边一个TListView,
中间来个TSplitter。
 
我说TQZ老兄,你能不能给个例子,我既不知道用IE的哪个ActiveX,也不知道怎么在
别人的机子上找出来,而且我是想知道HomeSite是怎样把资源管理器给嵌进去的,并
不是想知道怎样做一个资源管理器。另外我对ActiveX的概念并不是很懂,你就教教我吧。
 
在Delphi3,4中的Component菜单中可以Import ActiveX Control,Import之后
就可以当作VCL用了。要Import的有:Microsoft Internet Control;Microsoft
Internet Transfer Control
至于资源管理器,好像不是直接嵌进去的说...
 
那你能不能给个嵌IE的例子给我,简单点也行,我只是想知道实现的原理。
 
好吧。其实只要用TWebBrowser(Import from Microsoft Internet Control,which
is contained in Shdocvw.dll)就行了。Import并安装好之后,在Form上放一个,
设置好Align(比如为alClient)。要浏览时调用Navigate方法。如下:
WebBrowser1.Navigate('http://202.120.100.49/tqz',Flags,
TargetFrameName,PostData,Headers);//后四个参数可选
WebBrowser1.Refresh;//更新
WebBrowser1.GoForward;
WebBrowser1.GoBack;
WebBrowser1.Busy;//判断是否正在执行命令
WebBrowser1.Stop;//终止当前操作
怎么样,很简单吧?关于浏览的属性要到控制面板中的Internet属性中改。
另外还可以用OLE auto或调用COM接口的方式直接使用IE3/4,它的功能
更丰富一些。
 
我照你的方法去试了一下,果然可以。只是有个很怪的问题:Navigate函数后四个参数是OleVariant类型,为什么我附诸如True,'',NULL,''的这样四个参数它不让我编译呢?而且你说这四个参数是可选的,但我不用这四个参数它编译时却说无足够参数。还有你说的用OLE Auto或COM方式更过瘾,我希望你能抽点时间再给我讲一下,你也可以直接把范例程序发往我的信箱 kiven@990.net
对于您的赐教,我不胜感激。
 
因为 Navigate函数后四个参数是传址方式的,所以你不能以常量为参数。如果你有
Microsoft 的 OleView.exe ,你可以得到 Navigate函数的调用方式为:
void Navigate( [in] BSTR URL,
[in, optional] VARIANT* Flags,
[in, optional] VARIANT* TargetFrameName,
[in, optional] VARIANT* PostData,
[in, optional] VARIANT* Headers);
其中[in] 表示参数是输入的,[optional]表示参数可选,* 表示以指针方式,即
传址方式。因为Delphi 3 不支持函数重载,也不支持缺省参数,所以后四个参数
必须输入,不过你可以通过 TOleControl 的 OleObject 属性来绕过这个问题:

WebBrowser1.OleObject.Navigate('http://202.120.100.49/tqz');

当然,非可选参数必须输入,否则会产生运行错误。
 
多谢您的指点。我看过它在DELPHI中SHDocVw_TLB.pas中的声明:
procedure Navigate(const URL: WideString; var Flags, TargetFrameName, PostData, Headers: OleVariant); safecall;
我还以为它会自动转化为传址方式,却没想到DELPHI的编译器那么笨。
对了老兄,你还能给我讲讲OLEAuto和COM吗?我希望能得到你多一点的指点。谢了。
 
自动化(从前的 OLE 自动化)是部件对象模式(COM)的特征,它是一种工业标准技术,其应用程序可用来显露其对象为发展工具、宏语言和其他支持自动化的应用程序。例如,电子数据表应用程序能显露工作表、图表、单元格或单元格范围等每个不同类型的对象。一个字处理器可能显露如应用程序、文档、段落、句子、书签或选项的对象。当一个应用程序支持自动化时,它所显露的对象就可以被其它应用程序访问。
以上只是 OLE Automation 和 COM 的简单介绍,若要深入了解 OLE 技术,也不是我三言两语所能解释的。如果你的英语不错的话,可以看Delphi 的帮助,那儿有关于 OLE 的详尽解释。
如果你不打算自己开发 OLE SERVER,只想在自己的程序中应用各ActiveX控件或操纵 OLE SERVER的话,到没必要了解 OLE 的实现技术。上次我提到的 OleView 是一个很好的工具,它可以暴露已在计算机上注册的 OLE Object 的属性、方法和事件。这个工具很小,一般在 Microsoft 的开发工具包中都是随带的。
 

Similar threads

D
回复
0
查看
763
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部