共用方式為


OleSetAutoConvert 函式 (ole2.h)

指定 CLSID,當載入該類別的物件時,自動轉換成不同的類別。

語法

HRESULT OleSetAutoConvert(
  [in] REFCLSID clsidOld,
  [in] REFCLSID clsidNew
);

參數

[in] clsidOld

要轉換之物件類別的CLSID。

[in] clsidNew

應該取代 clsidOld 之物件類別的 CLSID。 這個新的 CLSID 會取代 clsidOld 登錄中任何現有的自動轉換資訊。 如果此值CLSID_NULL,則會從登錄中移除 clsidOld 的任何現有自動轉換資訊。

傳回值

此函式可以傳回標準傳回值E_INVALIDARG、E_OUTOFMEMORY和E_UNEXPECTED,以及下列值。

傳回碼 描述
S_OK
已成功標記物件。
REGDB_E_CLASSNOTREG
CLSID 未在登錄中正確註冊。
REGDB_E_READREGDB
從登錄讀取時發生錯誤。
REGDB_E_WRITEREGDB
寫入登錄時發生錯誤。
REGDB_E_KEYMISSING
無法從登錄讀取機碼。

備註

OleSetAutoConvert 會移至系統登錄、尋找 clsidOld 所指定 CLSID 底下的 AutoConvertTo 子機碼,並將它設定為 clsidNew。 此函式不會驗證 clsidNew 的適當登錄專案是否存在。 這些專案會在登錄中顯示為CLSID機碼的子機碼。

物件轉換表示對象的數據會永久與新的CLSID相關聯。 自動轉換通常會在新版物件應用程式的安裝程式中指定,因此舊版所建立的物件可以自動更新為新版本。

例如,可能需要將使用舊版電子錶格應用程式所建立的電子錶格轉換為新版本。 來自舊版的電子表格物件具有與新版本不同的 CLSID。 針對您想要自動更新的每個舊版,您會在安裝程式中呼叫 OleSetAutoConvert ,並指定舊版的 CLSID,以及新版本的 CLSID。 然後,每當使用者從舊版載入物件時,它就會自動更新。 若要支援對象的自動轉換,必須準備支援轉換的伺服器,以手動轉換具有舊版伺服器格式的物件。 自動轉換在內部依賴此手動轉換支援。

設定所需的 AutoConvertTo 值之前,安裝程式也應該呼叫 OleSetAutoConvert 來移除新類別的任何現有轉換,方法是將新類別指定為 clsidOld 參數,並將 clsidNew 參數設定為 CLSID_NULL。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 ole2.h
程式庫 Ole32.lib
Dll Ole32.dll

另請參閱

AutoConvertTo

OleDoAutoConvert

OleGetAutoConvert