共用方式為


註冊

當使用者要將 OLE 項目插入至應用程式時,OLE 會顯示物件類型清單以供選擇。 OLE 會從系統註冊資料庫中取得此清單,其中包含所有伺服器應用程式提供的資訊。 當伺服器註冊其本身時,其放入系統註冊資料庫的項目 (登錄) 會說明其所提供的每個物件類型、副檔名和通往的路徑,以及其他資訊。

架構和 OLE 系統動態連結程式庫 (DLL) 會使用此登錄,來決定什麼類型的 OLE 項目可在系統上使用。 當啟用連結的或內嵌的物件時,OLE 系統 DLL 也會使用此登錄,來決定如何啟動伺服器應用程式。

本文說明各個伺服器在安裝後以及每次執行時所需的應用程式。

如需系統註冊資料庫和用來更新之 .reg 檔案格式的詳細資訊,請參閱 OLE 程式設計人員參考

伺服器安裝

當您第一次安裝您的伺服器應用程式時,應用程式應該會註冊其支援的所有 OLE 項目類型。 您也可以讓伺服器在每次作為獨立應用程式執行時,更新系統註冊資料庫。 如果伺服器的可執行檔移動的話,如此可讓系統註冊資料庫保持最新。

注意

應用程式精靈產生的 MFC 應用程式在用做獨立的應用程式執行時,會自動自我註冊。

如果您想要在安裝期間註冊應用程式,請使用 RegEdit.exe 程式 如果您將安裝套裝程式含在您的應用程式中,請讓安裝程式執行 「RegEdit /S appname.reg 」。 (/S 旗標表示無訊息作業,也就是說,它不會顯示報告命令成功完成的對話方塊。否則,請指示使用者手動執行 RegEdit。

注意

應用程式精靈建立的 .reg 檔案不包含可執行檔的完整路徑。 您的安裝程式必須將 .reg 檔案修改為包含可執行檔的完整路徑,或者將 PATH 環境變數修改為包含安裝目錄。

RegEdit 會合併 .reg 文字檔的內容至註冊資料庫。 若要驗證或修復資料庫,請使用登錄編輯程式。 請避免刪除必要的 OLE 項目

伺服器初始化

當您使用應用程式精靈建立伺服器應用程式時,精靈自動為您完成所有初始化工作。 本節說明手動撰寫伺服器應用程式時必須做的事情。

當容器應用程式啟動伺服器應用程式時,OLE 系統 DLL 會將「/Embedding」選項加入至伺服器的命令列中。 伺服器應用程式的行為會視其由容器啟動與否而有所不同,因此,應用程式開始執行時應做的第一件事就是檢查命令列的「/Embedding」或「-Embedding」選項。 如果此參數存在,請載入一組將伺服器顯示為就地啟動或完全開啟的不同資源。 如需詳細資訊,請參閱 功能表和資源:伺服器新增

您的伺服器應用程式也應該呼叫其 CWinApp::RunEmbedded 函式來剖析命令列。 如果傳回非零的值,則應用程式不應該顯示其視窗,因為其是從容器應用程式而非獨立的應用程式執行。 此函式會更新在系統註冊資料庫中的伺服器項目,並為您呼叫 RegisterAll 成員函式,以執行執行個體註冊。

當您的伺服器應用程式啟動時,您必須確保應用程式可執行執行個體註冊。 執行個體註冊會通知 OLE 系統 DLL,伺服器為使用中並且準備接收來自容器的要求。 它不會將項目加入至註冊資料庫。 呼叫 ConnectTemplate 定義的 COleTemplateServer 成員函式,以執行伺服器的執行個體註冊。 這會將 CDocTemplate 物件連線到 COleTemplateServer 物件。

ConnectTemplate 式會採用三個參數:伺服器的 CLSID 、物件的指標 CDocTemplate ,以及指出伺服器是否支援多個實例的旗標。 miniserver 必須能夠支援多個執行個體,也就是它必須能夠同時執行伺服器的多個執行個體,每個容器一個執行個體。 因此,啟動迷你伺服器時,針對此旗標傳遞 TRUE

如果您要撰寫 miniserver,根據定義將始終由容器啟動。 您仍應該剖析命令列以檢查「/Embedding」選項。 這個選項不在命令列上表示使用者已嘗試啟動 miniserver 做為獨立應用程式。 如果發生這種情況,請向系統註冊資料庫註冊伺服器,然後向使用者顯示訊息方塊通知使用者,從容器應用程式啟動 miniserver。

另請參閱

OLE
伺服器
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer 類別