知识大全 用DELPHI开发自动化服务器

Posted

篇首语:少年安得长少年,海波尚变为桑田。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用DELPHI开发自动化服务器相关的知识,希望对你有一定的参考价值。

用DELPHI开发自动化服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

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

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

procedure TForm SetCaption(ACaption: string);beginSelf Caption := ACaption;end;

procedure TForm SetColor(AColor: TColor);beginSelf Color := AColor;end;

procedure TForm SetEditText(AText: string);beginSelf Edit Text := AText;end;  然后我们来给这个程序加上自动化的功能 点击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: WideString; safecall;procedure Set_Caption(const Value: WideString); safecall;procedure SetColor(AColor: OLE_COLOR); safecall;procedure SetEditText(const AText: WideString); safecall;

end;

implementation

uses ComServ;

function TMyAutoSrv Get_Caption: WideString;beginResult := Form GetCaption;end;

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 NameSelf Caption := AutoSrv Caption;AutoSrv Caption := HEHE ;AutoSrv SetColor(CLRed);AutoSrv SetEditText( HAHA );end;  其中的CreateOleObject函数将会返回一个IDispatch类型的接口 正是IDispatch接口让我们的程序可以对自动化服务器接口的调用进行后期连接 比如我们在上面添加一句AutoSrv Hello 程序也能被编释通过 但在执行时就会出错 使用Variant在执行效率上会比直接使用接口声明要慢一些   运行并点击按钮 可以看到自动化服务程序被加载 并按我们的代码设置了窗体色和EDIT 中的字串 呵呵 是不是很简单啊?

cha138/Article/program/Delphi/201311/24993

相关参考

知识大全 Delphi客户服务器应用开发(一)[2]

DELPHI基础教程:Delphi客户服务器应用开发(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(一)[3]

DELPHI基础教程:Delphi客户服务器应用开发(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(一)[1]

DELPHI基础教程:Delphi客户服务器应用开发(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(二)[1]

DELPHI基础教程:Delphi客户服务器应用开发(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(二)[4]

DELPHI基础教程:Delphi客户服务器应用开发(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(二)[3]

DELPHI基础教程:Delphi客户服务器应用开发(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(二)[2]

DELPHI基础教程:Delphi客户服务器应用开发(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(三)[4]

DELPHI基础教程:Delphi客户服务器应用开发(三)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(三)[3]

DELPHI基础教程:Delphi客户服务器应用开发(三)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 Delphi客户服务器应用开发(三)[2]

DELPHI基础教程:Delphi客户服务器应用开发(三)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起