用DELPHI开发自动化服务器

用DELPHI开发自动化服务器,第1张

 自动化是从一个应用程序内部自动控制另一个应用程序的方法 例如下面的代码 procedure CreateNewWordvarWordObj: VariantbeginWordObj := CreateOleObject( Word Basic ){此函数声明于ComObj单元}WordObj AppShowWordObj FileNewend这段代码将会打开WORD 并自动建立一个新的文档(当然前提是你的机子上安装了WORD) 这看来很有趣 也是一种非常有用的功能 那么如何让我们的程序也拥有类似WORD等的自动化功能并能让其它任何语言开发的程序对我们的程序进行自动化呢?用DELPHI来实现非常简单

这篇文章将会以实例形式一步步的来说明如何开发一个简单的自动化服务器

新建一个普通的应用程序 将工程保存为AutoSrv bpr 在主窗体上放一个Edit控件 并保存为MainForm pas 在这里我们打算给这个程序加上对窗口标题 窗体颜色 和Edit控件文本的自动化控制(当然这实现的功能很少 但对于讲解如何开发自动化服务器程序足够了) 在主窗口中加入如下代码:(注意:请自行将这些函数和过程的声明加入TForm 的public区)function TForm GetCaption: stringbeginresult := Self Captionend

procedure TForm SetCaption(ACaption: string)beginSelf Caption := ACaptionend

procedure TForm SetColor(AColor: TColor)beginSelf Color := AColorend

procedure TForm SetEditText(AText: string)beginSelf Edit Text := ATextend然后我们来给这个程序加上自动化的功能 点击New Items按钮 在弹出的New Items窗口中点击ActiveX选项卡 选择Automation Object点击OK按钮 在弹出的Automation Object Wizard窗口中CoClass Name一项中输入MyAutoSrv Delphi就会自动生成一个AutoSrv_TLB pas文件(类库)和实现类库接口类的单元 将这个新的单元保存为AutoSrvClass pas.

现在这个程序已经成为一个自动化服务器了 我们再来为其加上自动化的接口函数:( )点击View >Type Libray菜单 在Type Library Editor选择IMyAutoSrv接口 点击New Property 选择其属性为Read|Write 并把其命名为Caption Type设定为BSTR ( )点击New Method 将其命名为SetColor 点击右边的Parameters选项卡 点击ADD为新添的接口函数添加一个参数 将参数名设为AColor 参数Type设为OLE_COLOR ( )再次点击New Method 将其命名为SetEditText 以上面的方法为其添加一个参数 将参数名设为AText 参数Type设为BSTR

最后添加上接口函数的实现代码就OK了:在AutoSrvClass pas的Uses部分添加上MainForm 并将其代码改为如下代码 unit AutoSrvClass

{$WARN SYMBOL_PLATFORM OFF}

interface

usesComObj ActiveX AutoSrv_TLB StdVcl MainForm

typeTMyAutoSrv = class(TAutoObject IMyAutoSrv)protectedfunction Get_Caption: WideStringsafecallprocedure Set_Caption(const Value: WideString)safecallprocedure SetColor(AColor: OLE_COLOR)safecallprocedure SetEditText(const AText: WideString)safecall

end

implementation

uses ComServ

function TMyAutoSrv Get_Caption: WideStringbeginResult := Form GetCaptionend

procedure TMyAutoSrv Set_Caption(const Value: WideString)beginForm SetCaption(Value)end

procedure TMyAutoSrv SetColor(AColor: OLE_COLOR)beginForm SetColor(AColor)end

procedure TMyAutoSrv SetEditText(const AText: WideString)beginForm SetEditText(AText)end

initializationTAutoObjectFactory Create(ComServer TMyAutoSrv Class_MyAutoSrv ciMultiInstance tmApartment)end 运行这个程序一次 将会自动注册为自动化服务器 可以在注册表中的HKEY_CLASSES_ROOT主键下面找到其相关的注册信息

上面演示了如何开发一个自动化服务器 在这里我们将调用它 新建一个程序 添加一个Button 在其VAR区声明一个Variant变量: AutoSrv: variant再在Button 中添加如下代码 procedure TForm Button Click(Sender: TObject)beginAutoSrv := CreateOleObject( AutoSrv MyAutoSrv ){这个字符串就是自动化服务器的工程名加上CoClass Name}Self Caption := AutoSrv CaptionAutoSrv Caption := HEHE AutoSrv SetColor(CLRed)AutoSrv SetEditText( HAHA )end其中的CreateOleObject函数将会返回一个IDispatch类型的接口 正是IDispatch接口让我们的程序可以对自动化服务器接口的调用进行后期连接 比如我们在上面添加一句AutoSrv Hello 程序也能被编释通过 但在执行时就会出错 使用Variant在执行效率上会比直接使用接口声明要慢一些 运行并点击按钮 可以看到自动化服务程序被加载 并按我们的代码设置了窗体色和EDIT 中的字串 呵呵 是不是很简单啊?

lishixinzhi/Article/program/Delphi/201311/24993

分类: 资源共享

问题描述:

为什么我点二下就总会出现:您现在访问的站点可能需要下载下列Activex控件。然后就问我是不是要安装,就是不知道这些是什么东西呀,有没有病毒什么的,为什么老出现啊,快来帮帮我怎么解决,让它不再出来烦我。

解析:

呵呵,那个东西下不下都可以,不下的话网页上有些东西显示不出来,,至于病毒什么的只要不是陌生的网址一般也不会有.所以就看你怎么选择了.

至于Activex控件的具体说明,抄个别人的吧.

ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。

如果您使用的是Windows操作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。

组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。

目前,ActiveX控件在Windows 95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。

ActiveX组件包括如下几类:

1.自动化服务器:可以由其他应用程序编程驱动的组件。自动化服务器至少包括一

个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器

可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。

2.自动化控制器:那些使用和操纵自动化服务器的应用程序。

3.控件:ActiveX控件等价于以前的OLE控件或OCX。一个典型的控件包括设计时和运

行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的

IConnectionPoint接口用于控件可引发的事件。

4.文档:ActiveX文档,即以前所说的DocObect,表示一种不仅仅是简单控件或自动

化服务器的对象。ActiveX文档在结构上是对OLE链接和模型的扩展,并对其所在的

容器具有更多控制权。一个最显著的变化是菜单的显示方式。一个典型的OLE文档的

菜单会与容器菜单合并成一个新的 *** ,而ActiveX文档将替换整个菜单系统,只表

现出文档的特性而不是文档与容器共同的特性。

5.容器:ActiveX容器是一个可以作为自动化服务器、控件和文档宿主的应用程序


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/596204.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-09
下一篇2023-07-09

发表评论

登录后才能评论

评论列表(0条)

    保存