亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

用DELPHI開發自動化服器

2019-11-18 18:30:02
字體:
來源:轉載
供稿:網友
 

自動化是從一個應用程序內部自動控制另一個應用程序的方法,例如下面的代碼.
PRocedure CreateNewWord;
var
  WordObj: Variant;
begin
  WordObj := CreateOleObject('Word.Basic'); {此函數聲明于ComObj單元}
  WordObj.AppShow;
  WordObj.FileNew;
end;
  這段代碼將會打開WORD,并自動建立一個新的文檔(當然前提是你的機子上安裝了WORD),這看來很有趣,也是一種非常有用的功能.那么如何讓我們的程序也擁有類似WORD等的自動化功能并能讓其它任何語言開發的程序對我們的程序進行自動化呢?用DELPHI來實現非常簡單.

  這篇文章將會以實例形式一步步的來說明如何開發一個簡單的自動化服務器.

  新建一個普通的應用程序,將工程保存為AutoSrv.bpr.在主窗體上放一個Edit控件,并保存為MainForm.pas,在這里我們打算給這個程序加上對窗口標題,窗體顏色,和Edit控件文本的自動化控制(當然這實現的功能很少,但對于講解如何開發自動化服務器程序足夠了),在主窗口中加入如下代碼:(注意:請自行將這些函數和過程的聲明加入TForm1的public區)
function TForm1.GetCaption: string;
begin
  result := Self.Caption;
end;

procedure TForm1.SetCaption(ACaption: string);
begin
  Self.Caption := ACaption;
end;

procedure TForm1.SetColor(AColor: TColor);
begin
  Self.Color := AColor;
end;

procedure TForm1.SetEditText(AText: string);
begin
  Self.Edit1.Text := AText;
end;
  然后我們來給這個程序加上自動化的功能,點擊New Items按鈕,在彈出的New Items窗口中點擊ActiveX選項卡,選擇Automation Object點擊OK按鈕,在彈出的Automation Object Wizard窗口中CoClass Name一項中輸入MyAutoSrv, Delphi就會自動生成一個AutoSrv_TLB.pas文件(類庫)和實現類庫接口類的單元,將這個新的單元保存為AutoSrvClass.pas

  現在這個程序已經成為一個自動化服務器了,我們再來為其加上自動化的接口函數:
(1)點擊View->Type Libray菜單,在Type Library Editor選擇IMyAutoSrv接口,點擊New Property,選擇其屬性為Read|Write,并把其命名為Caption,Type設定為BSTR.
(2)點擊New Method,將其命名為SetColor,點擊右邊的Parameters選項卡,點擊ADD為新添的接口函數添加一個參數,將參數名設為AColor,參數Type設為OLE_COLOR.
(3)再次點擊New Method,將其命名為SetEditText,以上面的方法為其添加一個參數,將參數名設為AText,參數Type設為BSTR.

  最后添加上接口函數的實現代碼就OK了:
在AutoSrvClass.pas的Uses部分添加上MainForm,并將其代碼改為如下代碼.
unit AutoSrvClass;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
  ComObj, ActiveX, AutoSrv_TLB, StdVcl, MainForm;

type
  TMyAutoSrv = class(TAutoObject, IMyAutoSrv)
  protected
    function 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;
begin
  Result := Form1.GetCaption;
end;

procedure TMyAutoSrv.Set_Caption(const Value: WideString);
begin
  Form1.SetCaption(Value);
end;

procedure TMyAutoSrv.SetColor(AColor: OLE_COLOR);
begin
  Form1.SetColor(AColor);
end;

procedure TMyAutoSrv.SetEditText(const AText: WideString);
begin
  Form1.SetEditText(AText);
end;

initialization
  TAutoObjectFactory.Create(ComServer, TMyAutoSrv, Class_MyAutoSrv,
    ciMultiInstance, tmApartment);
end.
  運行這個程序一次,將會自動注冊為自動化服務器.可以在注冊表中的HKEY_CLASSES_ROOT主鍵下面找到其相關的注冊信息.

  上面演示了如何開發一個自動化服務器,在這里我們將調用它.
  新建一個程序,添加一個Button,在其VAR區聲明一個Variant變量:  AutoSrv: variant
再在Button1中添加如下代碼.
procedure TForm1.Button1Click(Sender: TObject);
begin
  AutoSrv := CreateOleObject('AutoSrv.MyAutoSrv'); {這個字符串就是自動化服務器的工程名加上CoClass Name}
  Self.Caption := AutoSrv.Caption;
  AutoSrv.Caption := 'HEHE';
  AutoSrv.SetColor(CLRed);
  AutoSrv.SetEditText('HAHA');
end;
  其中的CreateOleObject函數將會返回一個IDispatch類型的接口,正是IDispatch接口讓我們的程序可以對自動化服務器接口的調用進行后期連接,比如我們在上面添加一句AutoSrv.Hello,程序也能被編釋通過,但在執行時就會出錯. 使用Variant在執行效率上會比直接使用接口聲明要慢一些.
  運行并點擊按鈕,可以看到自動化服務程序被加載,并按我們的代碼設置了窗體色和EDIT1中的字串,呵呵,是不是很簡單啊?


上一篇:《參透delphi》書評

下一篇:Delphi與匯編雜談(2)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧洲成人午夜免费大片| 久久精品久久久久电影| 欧美精品videos性欧美| 亚洲国产精品系列| 成人黄色网免费| 精品成人久久av| 国内精品久久久久影院 日本资源| 自拍偷拍亚洲区| 欧美精品免费看| 欧美成人在线免费视频| 97精品国产97久久久久久免费| 91在线观看免费观看| 欧美老女人xx| 68精品久久久久久欧美| 国产精品久久一区主播| 精品无人区乱码1区2区3区在线| 欧美精品videossex88| 日韩美女视频免费看| 日韩成人中文电影| 欧美肥臀大乳一区二区免费视频| 欧美国产视频一区二区| 国产日韩换脸av一区在线观看| 亚洲精品成人网| 亚洲国产精品资源| 国产精品中文久久久久久久| 国产丝袜精品第一页| 91a在线视频| 欧美丝袜一区二区三区| 国产97在线播放| 亚洲午夜久久久影院| 清纯唯美亚洲激情| 精品美女永久免费视频| 日韩在线www| 亚洲精品电影网| 这里只有精品视频在线| 国产精品永久免费观看| 欧美日韩国产精品| 午夜精品免费视频| 亚洲深夜福利视频| 国产午夜精品全部视频播放| 亚洲精品www久久久久久广东| 色综合久久悠悠| www.日本久久久久com.| 精品香蕉在线观看视频一| 91成品人片a无限观看| 久久久91精品| 69国产精品成人在线播放| 正在播放欧美一区| 清纯唯美日韩制服另类| 亚洲国产欧美在线成人app| 亚洲天堂开心观看| 成人黄色中文字幕| 国产精品国模在线| 久久精品视频在线播放| 亚洲美女av在线| 久久精品久久精品亚洲人| 亚洲欧美日韩一区二区在线| 久热精品视频在线| 精品亚洲一区二区三区在线播放| 欧美激情网站在线观看| 亚洲自拍小视频| 亚洲欧洲午夜一线一品| 一本色道久久综合狠狠躁篇怎么玩| 中文字幕最新精品| 久久久久久亚洲精品不卡| 久久精品亚洲国产| 亚洲精品电影在线| 亚洲黄色在线看| 亚洲女人天堂色在线7777| 久久精品一本久久99精品| 亚洲第一页中文字幕| 国产精品www色诱视频| 日韩国产欧美精品在线| 国产91精品在线播放| 一区二区欧美在线| 91精品视频一区| 136fldh精品导航福利| 91精品国产色综合久久不卡98| 久久亚洲国产精品成人av秋霞| 日韩一区二区三区国产| 日韩精品在线免费| 国产精品亚洲一区二区三区| 欧美激情综合色综合啪啪五月| 精品久久香蕉国产线看观看亚洲| 国产精品久久久久久av福利| 日韩一区av在线| 欧美高清视频在线观看| 欧美视频精品一区| 亚洲香蕉成人av网站在线观看| 狠狠久久五月精品中文字幕| 亚洲电影免费观看高清完整版在线观看| 国产一区视频在线| 欧美肥婆姓交大片| 国产亚洲一区二区在线| 国产精品久久久久福利| www.精品av.com| 成人综合国产精品| 久久国产精品影片| 久久久国产一区二区| 国语对白做受69| 欧美性猛交99久久久久99按摩| 91网在线免费观看| 日韩在线中文字幕| 久久久99久久精品女同性| 成人午夜黄色影院| 91影院在线免费观看视频| 国产日韩视频在线观看| 国产精品9999| 国产成人精品一区| 欧美另类精品xxxx孕妇| 国产日韩精品在线| 5566日本婷婷色中文字幕97| 欧美午夜片在线免费观看| 久久综合网hezyo| 国产偷国产偷亚洲清高网站| 最近2019好看的中文字幕免费| 亚洲系列中文字幕| 国产欧美日韩中文字幕| 永久555www成人免费| 成人在线视频福利| 日韩av免费观影| 国产精品爽黄69| 亚洲成人1234| 2020欧美日韩在线视频| 欧美日韩另类字幕中文| 国产精品一区专区欧美日韩| 亚洲午夜av电影| 国产精品视频yy9099| 欧美日韩国产成人在线观看| 久久免费在线观看| 成人免费大片黄在线播放| 欧美限制级电影在线观看| 日韩亚洲一区二区| 成人精品一区二区三区电影免费| 国产精品久久国产精品99gif| 91成人在线播放| 欧美中文字幕在线观看| 欧美黑人国产人伦爽爽爽| 91在线观看欧美日韩| 热re91久久精品国99热蜜臀| 国内自拍欧美激情| 国产精品一区二区久久久久| 国产偷国产偷亚洲清高网站| 一区二区在线免费视频| 久久深夜福利免费观看| 久久伊人91精品综合网站| 国产精品美乳一区二区免费| 欧美贵妇videos办公室| 久久综合久中文字幕青草| 久久久91精品国产一区不卡| 精品无人区太爽高潮在线播放| 亚洲系列中文字幕| 欧美成人手机在线| 亚洲天堂色网站| 中日韩午夜理伦电影免费| 日韩在线观看免费高清完整版| 91色精品视频在线| 久久视频这里只有精品| 亚洲无限av看| 91九色视频导航| 日韩免费不卡av| 欧美成人一区二区三区电影| 亚洲四色影视在线观看| 成人欧美一区二区三区黑人|