【正文】
程序的內部對象,對象不需要注冊,外部 進程不能創(chuàng) 建此對象 Single 每個服務器實例只能輸出一個 OLE 對象實例, 若控制器需要多個 OLE 對象實例, WIndows 為第一個 OLE 對象創(chuàng)建一個服務器實例 Multiple 一個服務器能創(chuàng)建和輸出多個 OLE 對象實例, 進程內服務器大多是 Multiple 類型 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 每個使用 OLEAuto 單元的工程文件自動地擁有一個叫 Automation 的對象,它是非可視對 象。 StartMode 指示 OLE 自動化服務器打開方式打開的目的。 表 StartMode 的取值及含義 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 取值 含義 ─────────────────────────────── SmStandAlone 用戶啟動應用程序 SmAutomation Windows 為創(chuàng)建 OLE 對象而啟動程序 SmRegSever 應用程序僅為注冊一個或多個 OLE 對象而啟動 SmUnregSever 應用程序僅為注銷一個或多個 OLE 對象而啟動 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 當 StartMode 模式是 SmAutomation,而用戶不再需要服務器時發(fā)生OnLastRelease 事件。缺省情況下,服務器關閉實 例,但 OnLastRelease 事件可根據(jù)實際情況是否關閉。把 ShutDown 設置成True,則在最后一個 OLE 對象釋放時服務器不關閉。定義界面主要是為了控制器能夠引用它們。 創(chuàng)建 OLE 自動化服務器第一步是創(chuàng)建服務器自身。這主要取決于是創(chuàng)建進程內服務器還是進程外服務器。 exports DLLGetClassObject,DLLCanUnloadNow。 以上代 碼必須準確拼寫,包括大小寫。 創(chuàng)建進程外服務器: Delphi 應用程序; begin 之后加入以下代碼; if Automation,Server Registration then Exit。 把 OLE 自動化對象加入服務器: Delphi 集成開發(fā)環(huán)境 中選擇 File| New 菜單項, 并在對象集中選擇Automation Object,Delphi 打開自動化對象專家。當服務器在 Windows 中注冊 OLE 對象, 就以這個名字在系統(tǒng)注冊。 。 在注冊代碼中包括一個自動產(chǎn)生的 ID 號,這個 ID 號是全局唯一的,通常不要修改。 在創(chuàng)建 了服務器并把 OLE 自動化對象加入服務器之后,控制器程序就可以對服務器進行操縱。任何控制器可以用 ProgID 號來創(chuàng)建 OLE 對象實例。 procedure (Sender : TObject)。39。 except MessageDlg( 39。, mtError,[mbok],0) Halt。 end。 OLE自動對象包括屬性和方法,雖然 OLE 自動化對象與面向對象 Pascal 中的對象不是同一概念,但 Delphi 允許使用與類似的語法對 OLE 對象的方法進行調用。 begin MemoEdit,TileWindow。 其中 TileWindows 是 OLE 對 象 TMemoApp 中定義的方法。 procedure TMainForm,CreateButtonClick(Sender : TObject)。 begin CloseMemo for I := 1 to 3 do Memos[2] := 。 其中 NewMemo 在 MemoAuto 單元中定義如下: function : Variant。 39。 end。 var I : Integer。This text was added through OLE Automation39。 en