自动化

自动化(以前称为 OLE 自动化)使一个应用程序能够作在另一个应用程序中实现的对象,或公开对象,以便可以对其进行作。

自动化服务器是一种应用程序(一种 COM 服务器),它通过 COM 接口向其他应用程序(称为自动化客户端)公开其功能。 通过公开,自动化客户端可以通过直接访问对象和使用它们提供的服务来自动执行某些功能。

自动化服务器和客户端使用始终派生自 IDispatch 并获取并返回一组称为自动化类型的特定数据类型的 COM 接口。 可以自动执行公开自动化接口的任何对象,并提供可从其他应用程序访问的方法和属性。 自动化适用于 OLE 和 COM 对象。 自动化对象可能是本地或远程对象(在另一台计算机上可通过网络访问):因此,有两类自动化:

  • 自动化(本地)。

  • 远程自动化(使用分布式 COM 或 DCOM 通过网络)。

当应用程序提供对其他应用程序有用的功能时,公开对象非常有用。 例如,ActiveX 控件是自动化服务器的一种类型;承载 ActiveX 控件的应用程序是该控件的自动化客户端。

作为另一个示例,字处理器可能会将其拼写检查功能公开给其他程序。 公开对象使供应商可以使用其他应用程序的现成功能改进其应用程序。 通过这种方式,自动化在应用程序本身级别应用一些面向对象的编程原则,例如可重用性和封装。

更重要的是,自动化为用户和解决方案提供商提供支持。 通过公开应用程序功能通过通用、定义完善的接口,自动化可以采用单个常规编程语言(如 Microsoft Visual Basic)而不是多种特定于应用程序的宏语言构建全面的解决方案。

许多商业应用程序(如 Microsoft Excel 和 Microsoft Visual C++)都允许自动执行其大部分功能。 例如,在 Visual C++中,可以编写 VBScript 宏来自动执行生成、代码编辑或调试任务的各个方面。

在自动化中传递参数

创建自动化方法的一个难题是帮助提供统一的“安全”机制,用于在自动化服务器和客户端之间传递数据。 自动化使用 VARIANT 类型传递数据。 VARIANT 类型是带标记的联合。 它具有值的数据成员(这是匿名C++联合)和指示联合中存储的信息类型的数据成员。 VARIANT 类型支持许多标准数据类型:2 字节和 4 字节整数、4 字节和 8 字节浮点数、字符串和布尔值。 此外,它还支持 HRESULT (OLE 错误代码)、 CURRENCY (固定点数值类型)和 DATE (绝对日期和时间)类型,以及指向 IUnknown 接口和 IDispatch 接口的指针。

VARIANT 类型封装在 COleVariant 类中。 支持的 CURRENCYDATE 类封装在 COleCurrencyCOleDateTime 类中。

自动化示例

  • AUTOCLIK 使用此示例学习自动化技术,并作为学习远程自动化的基础。

  • ACDUAL 向自动化服务器应用程序添加双重接口。

  • CALCDRIV 自动化客户端应用程序驱动 MFCCALC。

  • INPROC 演示 In-Process 自动化服务器应用程序。

  • IPDRIVE 自动化客户端应用程序驱动 INPROC。

  • MFCCALC 演示自动化客户端应用程序。

想要详细了解哪些内容

你想要做什么

另请参阅

MFC COM