oleautomation-Attribut
Das oleautomation-Attribut gibt an, dass eine Schnittstelle mit Automation kompatibel ist.
[
oleautomation,
uuid(string-uuid)
[ , interface-attribute-list]
]
interface interface-name : base-interface
{
...
}
Parameter
-
string-uuid
-
Gibt eine UUID-Zeichenfolge an, die vom Hilfsprogramm Uuidgen generiert wird.
-
interface-attribute-list
-
Gibt andere Attribute an, die für die Schnittstelle als Ganzes gelten.
-
Schnittstellenname
-
Gibt den Namen der Schnittstelle an.
-
base-interface
-
Gibt den Namen einer Automation-Schnittstelle an, von der diese abgeleitete Schnittstelle Memberfunktionen, status Codes und Schnittstellenattribute erbt. Alle Automatisierungsschnittstellen werden von IUnknown oder IDispatch abgeleitet.
Bemerkungen
Die Parameter und Rückgabetypen, die für die Member einer [oleautomation]- Schnittstelle angegeben sind, müssen Automation-kompatibel sein, wie in der folgenden Tabelle aufgeführt.
type | BESCHREIBUNG |
---|---|
boolean | Datenelement, das den Wert VARIANT_TRUE oder VARIANT_FALSE haben kann. Die Größe entspricht VARIANT_BOOL. |
unsigned char | 8-Bit-Datenelement ohne Vorzeichen. |
double | 64-Bit-IEEE-Gleitkommazahl. |
float | 32-Bit-IEEE-Gleitkommazahl. |
int | Ganzzahl mit Vorzeichen, deren Größe systemabhängig ist. Auf 32-Bit-Plattformen behandelt MIDL int als 32-Bit-Ganzzahl mit Vorzeichen. |
long | Ganze 32-Bit-Zahl mit Vorzeichen: |
short | 16-Bit-Ganzzahl mit Vorzeichen. |
BSTR | Zeichenfolge mit Längenpräfix, wie im Automation-Thema BSTR beschrieben. |
CURRENCY | Feste Gleitkommazahl mit 8 Byte. |
DATE | 64-Bit, Gleitkommabruchzahl der Tage seit dem 30. Dezember 1899. |
SCODE | Für 16-Bit-Systeme: integrierter Fehlertyp, der VT_ERROR entspricht. |
Typedef-Enumeration  myenum | Ganzzahl mit Vorzeichen, deren Größe systemabhängig ist. |
Schnittstelle IDispatch * | Zeiger auf die IDispatch-Schnittstelle (VT_DISPATCH). |
Schnittstelle IUnknown * | Zeiger auf eine Schnittstelle, die nicht von IDispatch (VT_UNKNOWN) abgeleitet ist. (Jede OLE-Schnittstelle kann durch ihre IUnknown-Schnittstelle dargestellt werden.) |
Dispatchschnittstelle  Typname * | Zeiger auf eine von IDispatch (VT_DISPATCH) abgeleitete Schnittstelle. |
Co  Typname * | Zeiger auf einen Co-Klassennamen (VT_UNKNOWN). |
[oleautomation]-Schnittstelle  Typname * | Zeiger auf eine Schnittstelle, die von IUnknown abgeleitet wird. |
SAFEARRAY(TypeName) | TypeName ist einer der oben genannten Typen. Array dieser Typen. |
Typename* | TypeName ist einer der oben genannten Typen. Zeiger auf einen Typ. |
Decimal | 96-Bit-Ganzzahl ohne Vorzeichen, skaliert durch eine variable Leistung von 10. Ein Dezimaldatentyp, der eine Größe und eine Skalierung für eine Zahl (wie in Koordinaten) bereitstellt. |
Ein Parameter ist mit Automation kompatibel, wenn sein Typ ein Automation-kompatibler Typ, ein Zeiger auf einen Automation-kompatiblen Typ oder ein SAFEARRAY eines Automation-kompatiblen Typs ist.
Ein Rückgabetyp ist mit Automation kompatibel, wenn sein Typ ein HRESULT, SCODE oder void ist. Midl erfordert jedoch, dass Schnittstellenmethoden entweder HRESULT oder SCODE zurückgeben. Beim Zurückgeben von void wird ein Compilerfehler generiert.
Ein Member ist mit Automation kompatibel, wenn sein Rückgabetyp und alle zugehörigen Parameter Automation-kompatibel sind.
Eine Schnittstelle ist mit Automation kompatibel, wenn sie von IDispatch oder IUnknown abgeleitet wird, über das Attribut [oleautomation] verfügt und alle ihre VTBL-Einträge Automation-kompatibel sind. Für 32-Bit-Plattformen muss die Aufrufkonvention für alle Methoden in der Schnittstelle STDCALL sein. Für 16-Bit-Systeme müssen alle Methoden über die CDECL-Aufrufkonvention verfügen.
Jedes Dispinterface ist implizit mit Automation kompatibel. Daher sollten Sie das [oleautomation]- Attribut nicht auf dispinterface verwenden.
Das Attribut [oleautomation] ist nicht verfügbar, wenn Sie mit dem MIDL-Compiler /osf-Schalter kompilieren.
Flags
TYPEFLAG_FOLEAUTOMATION
Beispiele
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.
}
Weitere Informationen