atributo oleautomation

O atributo oleautomation indica que uma interface é compatível com a Automação.

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

Parâmetros

string-uuid

Especifica uma cadeia de caracteres UUID gerada pelo utilitário Uuidgen.

interface-attribute-list

Especifica outros atributos que se aplicam à interface como um todo.

nome da interface

Especifica o nome da interface.

interface base

Especifica o nome de uma interface de Automação da qual essa interface derivada herda funções de membro, códigos de status e atributos de interface. Todas as interfaces de Automação são derivadas de IUnknown ou IDispatch.

Observações

Os parâmetros e os tipos de retorno especificados para os membros de uma interface [oleautomation] devem ser compatíveis com a Automação, conforme listado na tabela a seguir.

Tipo Descrição
booliano Item de dados que pode ter o valor VARIANT_TRUE ou VARIANT_FALSE. O tamanho corresponde a VARIANT_BOOL.
caractere sem sinal Item de dados sem sinal de 8 bits.
duplo Número de ponto flutuante IEEE de 64 bits.
float Número de ponto flutuante IEEE de 32 bits.
int Inteiro com sinal, cujo tamanho é dependente do sistema. Em plataformas de 32 bits, MIDL trata o int como um inteiro com sinal de 32 bits.
longo Inteiro com sinal de 32 bits.
curto Inteiro com sinal de 16 bits.
BSTR Cadeia de caracteres prefixada por comprimento, conforme descrito no tópico de Automação BSTR.
MOEDA Número de ponto flutuante fixo de 8 bytes.
DATA Número fracionário de 64 bits, ponto flutuante de dias desde 30 de dezembro de 1899.
SCODE Para sistemas de 16 bits– tipo de erro interno que corresponde a VT_ERROR.
Typedef enummyenum Inteiro com sinal, cujo tamanho é dependente do sistema.
IDispatch de interface * Ponteiro para a interface IDispatch (VT_DISPATCH).
Interface IUnknown * Ponteiro para uma interface que não deriva de IDispatch (VT_UNKNOWN). (Qualquer interface OLE pode ser representada por sua interface IUnknown .)
dispinterfaceTypename * Ponteiro para uma interface derivada de IDispatch (VT_DISPATCH).
CoclassTypename * Ponteiro para um nome de coclasse (VT_UNKNOWN).
[oleautomation] interfaceTypename * Ponteiro para uma interface que deriva do IUnknown.
SAFEARRAY(TypeName) TypeName é qualquer um dos tipos acima. Matriz desses tipos.
Typename* TypeName é qualquer um dos tipos acima. Ponteiro para um tipo.
Decimal Inteiro binário sem sinal de 96 bits dimensionado por uma potência variável de 10. Um tipo de dados decimal que fornece um tamanho e uma escala para um número (como em coordenadas).

 

Um parâmetro será compatível com a Automação se seu tipo for um tipo compatível com automação, um ponteiro para um tipo compatível com automação ou um SAFEARRAY de um tipo compatível com Automação.

Um tipo de retorno será compatível com a Automação se seu tipo for HRESULT, SCODE ou void. No entanto, MIDL requer que os métodos de interface retornem HRESULT ou SCODE. Retornar nulo gera um erro do compilador.

Um membro é compatível com a Automação se seu tipo de retorno e todos os seus parâmetros forem compatíveis com a Automação.

Uma interface será compatível com a Automação se ela for derivada de IDispatch ou IUnknown, ela tiver o atributo [oleautomation] e todas as suas entradas VTBL forem compatíveis com a Automação. Para plataformas de 32 bits, a convenção de chamada para todos os métodos na interface deve ser STDCALL. Para sistemas de 16 bits, todos os métodos devem ter a convenção de chamada CDECL.

Cada dispinterface é implicitamente compatível com Automação. Portanto, você não deve usar o atributo [oleautomation] em dispinterface.

O atributo [oleautomation] não está disponível quando você compila usando o compilador MIDL /osf switch.

Sinalizadores

TYPEFLAG_FOLEAUTOMATION

Exemplos

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.
}

Consulte também

Arquivo IDL (Definição de Interface)

Gerando uma biblioteca de tipos com MIDL

Exemplo de arquivo ODL

Sintaxe de arquivo ODL

/Osf

Uuid