Automação
A Automação (anteriormente conhecida como Automação OLE) possibilita que um aplicativo manipule objetos implementados em outro aplicativo ou exponha objetos para que eles possam ser manipulados.
Um servidor de Automação é um aplicativo (um tipo de servidor COM) que expõe sua funcionalidade por meio de interfaces COM para outros aplicativos, chamados de clientes de Automação. A exposição permite que os clientes de Automação automatizem determinadas funções acessando diretamente os objetos e usando os serviços que eles fornecem.
Servidores e clientes de Automação usam interfaces COM que sempre são derivadas de IDispatch
e usam e retornam um conjunto específico de tipos de dados chamados de tipos de Automação. Você pode automatizar qualquer objeto que exponha uma interface de Automação, fornecendo métodos e propriedades que pode acessar de outros aplicativos. A automação está disponível para objetos OLE e COM. O objeto automatizado pode ser local ou remoto (em outro computador acessível por meio de uma rede), portanto, há duas categorias de automação:
Automação (local).
Automação Remota (por meio de uma rede, usando COM Distribuído ou DCOM).
Expor objetos é benéfico quando os aplicativos fornecem funcionalidade útil para outros aplicativos. Por exemplo, um controle ActiveX é um tipo de servidor de Automação. O aplicativo que hospeda o controle ActiveX é o cliente de automação desse controle.
Em outro exemplo, um processador de palavras pode expor sua funcionalidade de verificação ortográfica a outros programas. A exposição de objetos permite que os fornecedores aprimorem os respectivos aplicativos usando a funcionalidade pronta de outros aplicativos. Dessa forma, a Automação aplica alguns dos princípios da programação orientada a objetos, como reutilização e encapsulamento, no nível dos próprios aplicativos.
O mais importante é o suporte que a Automação dá aos usuários e aos provedores de soluções. Ao expor a funcionalidade do aplicativo por meio de uma interface comum e bem definida, a Automação possibilita criar soluções abrangentes em uma só linguagem de programação geral, como o Microsoft Visual Basic, em vez de em diversas linguagens de macro específicas do aplicativo.
Muitos aplicativos comerciais, como o Microsoft Excel e o Microsoft Visual C++, permitem automatizar grande parte de suas funcionalidades. Por exemplo, no Visual C++, você pode escrever macros VBScript para automatizar builds, aspectos da edição de código ou tarefas de depuração.
Passando parâmetros na Automação
Uma dificuldade da criação de métodos de Automação é ajudar a fornecer um mecanismo "seguro" uniforme para passar dados entre servidores e clientes de automação. A Automação usa o tipo VARIANT para passar dados. O tipo VARIANT é uma união marcada. Ele tem um membro de dados para o valor (trata-se de uma união C++ anônima) e um membro de dados que indica o tipo de informações armazenadas na união. O tipo VARIANT dá suporte a vários tipos de dados padrão: inteiros de 2 e 4 bytes, números de ponto flutuante de 4 e 8 bytes, cadeias de caracteres e valores boolianos. Além disso, ele dá suporte aos tipos HRESULT (códigos de erro OLE), CURRENCY (um tipo numérico de ponto fixo) e DATE (data e hora absolutas), bem como ponteiros para as interfaces IUnknown
e IDispatch
.
O tipo VARIANT é encapsulado na classe COleVariant. As classes CURRENCY e DATE com suporte são encapsuladas nas classes COleCurrency e COleDateTime.
Exemplos de Automação
AUTOCLIK Use este exemplo para aprender técnicas de Automação e como base para aprender sobre a Automação Remota.
ACDUAL Adiciona interfaces duplas a um aplicativo de servidor de Automação.
CALCDRIV Aplicativo cliente de Automação que executa MFCCALC.
INPROC Demonstra um aplicativo de servidor de Automação em Processo.
IPDRIVE Aplicativo cliente de Automação que executa INPROC.
MFCCALC Demonstra um aplicativo cliente de Automação.