oleautomation 屬性

oleautomation屬性工作表示介面與自動化相容。

[ 
    oleautomation, 
    uuid(string-uuid)
    [ , interface-attribute-list] 
] 
interface interface-name : base-interface
{
    ...
}

參數

string-uuid

指定 Uuidgen 公用程式所產生的 UUID 字串。

interface-attribute-list

指定套用至整個介面的其他屬性。

interface-name

指定介面的名稱。

base-interface

指定這個衍生介面繼承成員函式、狀態碼和介面屬性的自動化介面名稱。 所有自動化介面都是衍生自 IUnknownIDispatch

備註

[oleautomation] 介面成員指定的參數和傳回型別必須與 Automation 相容,如下表所列。

類型 Description
boolean 可具有值的資料項目VARIANT_TRUE或VARIANT_FALSE。 大小會對應至VARIANT_BOOL。
unsigned char 8 位無符號資料項目。
double 64 位 IEEE 浮點數。
float 32 位 IEEE 浮點數。
int 帶正負號的整數,其大小與系統相依。 在 32 位平臺上,MIDL 會將 int 視為 32 位帶正負號的整數。
long 32 位元帶正負號的整數。
short 16 位帶正負號的整數。
BSTR 長度前置字串,如自動化主題 BSTR中所述。
CURRENCY 8 位元組,固定浮點數。
DATE 自 1899 年 12 月 30 日起的 64 位浮點分數數。
SCODE 針對對應至VT_ERROR的 16 位系統內建錯誤類型。
Typedef 列舉Â myenum 帶正負號的整數,其大小與系統相依。
介面 IDispatch * IDispatch介面 (VT_DISPATCH) 的指標。
介面 IUnknown * 不衍生自 IDispatch (VT_UNKNOWN) 之介面的指標。 (任何 OLE 介面都可以由其 IUnknown 介面表示。)
dispinterface Typename * 衍生自 IDispatch (VT_DISPATCH) 之介面的指標。
Coclass Typename * coclass 名稱的指標 (VT_UNKNOWN) 。
[oleautomation] 介面Â Typename * 衍生自 IUnknown之介面的指標。
SAFEARRAY (TypeName) TypeName 是上述任何類型。 這些類型的陣列。
TypeName * TypeName 是上述任何類型。 型別的指標。
十進位 96 位無符號二進位整數,以 10 的變數乘冪來縮放。 十進位資料類型,提供數位的大小和小數位數 (,如座標) 所示。

 

如果參數的類型是自動化相容類型、自動化相容型別的指標,或自動化相容類型的 SAFEARRAY,則參數與 Automation 相容。

如果傳回類型是 HRESULT、SCODE 或 void,則傳回型別與 Automation 相容。 不過,MIDL 需要介面方法傳回 HRESULT 或 SCODE。 傳回 void 會產生編譯器錯誤。

如果成員的傳回型別和其所有參數都與自動化相容,則成員與 Automation 相容。

如果介面衍生自 IDispatchIUnknown,則介面與自動化相容,它具有 [oleautomation] 屬性,而且其所有 VTBL 專案都相容。 針對 32 位平臺,介面中所有方法的呼叫慣例必須是 STDCALL。 對於 16 位系統,所有方法都必須具有 CDECL 呼叫慣例。

每個 dispinterface 都會隱含地與自動化相容。 因此,您不應該在dispinterface上使用[oleautomation]屬性。

當您使用 MIDL 編譯器/osf參數進行編譯時,無法使用[oleautomation]屬性。

Flags

TYPEFLAG_FOLEAUTOMATION

範例

library Hello
{
    importlib("stdole32.tlb");
    [
        uuid(12345678-1234-1234-1234-123456789ABC),
        helpstring("Application object for the Hello application."),
        oleautomation,
        dual
    ]
    interface IHello : IDispatch
    {
        // Interface definition statements.
    }

    // Other library definition statements.
}

另請參閱

介面定義 (IDL) 檔案

使用 MIDL 產生類型程式庫

ODL 檔案範例

ODL 檔案語法

/osf

uuid