LabVIEW可作为ActiveX客户端,访问与已启用ActiveX的应用程序关联的对象、属性、方法和事件。LabVIEW也可作为ActiveX服务器,允许其他应用程序访问LabVIEW对象、属性和方法。关于在LabVIEW中使用ActiveX的详细信息,请访问ni.com查阅ActiveX和LabVIEW。

ActiveX对象、属性和方法

支持ActiveX的应用程序中对象的属性和方法可供其他程序访问。对象可以对用户显示,如按钮、窗口、图片、文档和对话框;也可以不显示,如应用程序对象。如需访问应用程序,可通过访问与应用程序相关的对象并设置该对象的属性或调用其方法。

ActiveX事件

事件是对对象执行的动作。例如,单击鼠标或按键。无论何时在对象上产生这些操作,该对象都会发送一个带有特定事件数据的事件来警告ActiveX容器。ActiveX对象定义了该对象可用的事件。

要在应用程序中使用ActiveX事件,必须先注册该事件并在事件发生时处理事件。ActiveX事件注册与动态事件注册类似。在动态事件注册中,必须在While循环内部放置一个事件结构并连线对象引用至该结构,然后选择希望LabVIEW生成的事件。例如,可以从一个ActiveX容器调用基于Windows的树形控件,并指定在该树形控件中的项上产生双击事件。但ActiveX事件VI的架构与事件处理VI不同,必须使用“事件回调注册”函数,而不是“注册事件”函数指定和注册事件。

注: NI建议无需继续处理事件时,使用取消注册事件函数取消注册事件。如未取消注册事件,VI运行时,即使无事件结构等待处理事件,LabVIEW也可继续生成和排列事件,产生内存消耗且在前面板事件锁定启用时导致VI挂起。

在LabVIEW中生成和注册ActiveX事件的组成部分的详细信息,见下表。

组成部分 说明 应用场景
ActiveX对象 需要生成事件的ActiveX对象。 选择要生成事件的ActiveX对象后,使用自动化引用句柄指定事件。
事件回调注册函数 与“注册事件”函数类似,“事件回调注册”函数是一个能够处理多个事件的可扩展节点。 将一个ActiveX对象的引用连接到事件回调注册函数,并指定该对象产生的事件,这样就注册了ActiveX对象的事件。
回调VI VI包含用户编写的处理事件的代码。 可在使用“事件回调注册”函数注册事件后,创建上述VI。不同的事件可具有不同的事件数据格式。因此创建回调VI后更改事件,可能导致程序框图连线断开。所以应在创建回调VI前选择事件。

ActiveX VI、函数、输入控件和显示控件

下表中的VI、函数、输入控件和显示控件可用来访问与已启用ActiveX的应用程序关联的对象、属性、方法和事件。

VI、函数、输入控件或显示控件名称 说明 范例 使用方法
自动化引用句柄控件 该控件创建一个ActiveX对象的引用。 在VI的前面板上,可创建一个嵌入在ActiveX容器中的Word文档的引用。 右键单击前面板上的控件并从需访问的类型库中选择一个对象。
打开自动化函数 该函数打开ActiveX对象。 可使用该函数打开Microsoft Excel文档。 右键单击函数,从快捷菜单中选择选择ActiveX类,选择对象的类。引用句柄打开后可传递至其他ActiveX函数
ActiveX容器 容器在前面板上访问和显示ActiveX对象。 ActiveX容器可用于显示另一个已启用ActiveX的应用程序中的按钮。例如,Web浏览器。 右键单击ActiveX容器,并从快捷菜单中选择插入ActiveX对象。然后选择要访问的对象。
属性节点 该函数获取(读取)和设置(写入)ActiveX对象相关的属性。 使用该函数设置嵌入在前面板的ActiveX容器中的对象的属性。 右键单击前面板或程序框图上的ActiveX对象,并选择创建»属性节点。在快捷菜单中选择要为对象设置的属性。
调用节点 该函数调用与ActiveX对象关联的方法。 与设置属性节点的属性类似,该函数可用于调用嵌入在前面板的ActiveX容器中的对象的方法。 右键单击前面板或程序框图上的ActiveX对象,并选择创建»调用节点。在快捷菜单中选择要为对象调用的方法。
事件回调注册 该函数处理ActiveX对象发生的事件。 该函数可用于生成和注册事件。例如,添加数据至Microsoft Excel电子表格。
变体输入控件和显示控件 变体输入控件和显示控件在ActiveX控件之间传递数据。 该输入控件和显示控件可用于在启用了ActiveX的应用程序(例如,Microsoft Excel或Microsoft Word)间传递数据。 浏览变体与类选板,在前面板或程序框图上定位并放置该输入控件和显示控件。

数据类型对应关系

LabVIEW将某些ActiveX属性和方法的数据类型转换为LabVIEW数据类型,以允许LabVIEW读取和解析数据。下表列出了ActiveX数据类型以及相应的转换后的LabVIEW数据类型。

ActiveX数据类型 LabVIEW数据类型
char
short
long
hyper
float
double
BSTR

如何将LabVIEW设置为ActiveX客户端

当LabVIEW访问与其他已启用ActiveX的应用程序相关联的对象时,LabVIEW用作ActiveX客户端。下列方式可将LabVIEW设置为ActiveX客户端:

  • 打开一个应用程序如Microsoft Excel,创建一个文档并向该文档添加数据。
  • 在容器中嵌入一个前面板上的文档如Microsoft Word文档或Excel电子表格。
  • 在前面板上放置一个按钮或其他应用程序的对象,如调用其他应用程序帮助文件的帮助按钮。
  • 将其连接至其他程序创建的ActiveX控件

LabVIEW通过ActiveX引用句柄控件或ActiveX容器访问ActiveX对象,两者都是前面板对象。使用ActiveX引用句柄控件选择一个ActiveX对象。使用ActiveX容器选择可显示的ActiveX对象(例如,按钮或文档),将该对象放置在前面板上。这两种对象在程序框图上都显示为“自动化引用句柄”控件。

ActiveX对象的设计模式

选择设计模式的选项时,ActiveX容器拥有控件的引用并负责创建和释放新控件。控件的设计模式和运行模式各自独立。每次运行VI时,LabVIEW删除设计模式控件并在运行模式下以一个新控件取代。VI停止运行时,LabVIEW删除运行模式控件并创建一个新的设计模式控件。使用ActiveX和LabVIEW时,设计模式与运行模式的关系与LabVIEW编程其他领域(例如,VI脚本或VI服务器)的编辑模式和运行模式类似。

生成应用程序不包含设计模式控件。LabVIEW在VI开始运行时创建运行模式控件,在VI停止运行时释放该控件。LabVIEW仅在运行模式生成事件,设计模式不会生成事件。默认模式为运行模式。

配置设计模式的详细信息见下列示意图。

设置ActiveX属性的方法

打开一个ActiveX服务器或插入ActiveX控件或文档后,可以使用ActiveX控件属性浏览器、属性选项卡和属性节点来设置与该控件或文档相关的属性。

名称 说明 访问方法
ActiveX控件属性浏览器 使用ActiveX控件属性浏览器查看和设置与ActiveX容器中某个ActiveX控件或文档相关的所有属性。ActiveX控件属性浏览器是一种交互式设置ActiveX对象属性的简易方法。 通过下列方法之一访问ActiveX控件属性浏览器:
  1. 右键单击容器中的控件或文档,从快捷菜单中选择属性浏览器
  2. 单击查看»ActiveX控件属性浏览器
注:仅在编辑模式时可使用该浏览器设置属性,且仅可设置位于容器中的ActiveX对象的属性。
ActiveX属性页 许多ActiveX对象都包含属性页,属性菜单中列出与该对象相关的属性。与ActiveX控件属性浏览器类似,ActiveX属性页是一种交互式设置ActiveX对象属性的简易方法。仅在编辑模式时可使用该属性页设置属性,且仅可设置位于容器中的ActiveX对象的属性。 如需访问ActiveX属性页,右键单击前面板上容器中的对象,并从快捷菜单中选择该对象的名称。
注:并非ActiveX对象均带有属性页。
属性节点 使用属性节点,通过编程设置ActiveX属性。 按照下列步骤,使用属性节点通过编程设置ActiveX属性:
  1. 获取待创建ActiveX属性的ActiveX对象的引用。
  2. 在程序框图上放置一个属性节点。
  3. 将对象引用连接至节点的引用输入。

下列程序框图演示了使用属性节点,通过编程更改ActiveX控件的值属性,以在温度超出限定值时警告用户。当温度达到或高于85华氏度时,改变CWButton ActiveX控件的值属性,该控件是NI Measurement Studio用户接口ActiveX库的一部分。

在此范例中,CWButton控件作为一个指示灯,在温度达到报警限度时改变颜色并显示警告(当CWButton控件处于打开状态下)。

注:除通过编程设置CWButton控件的OffText、OffColor、OnText和OnColor属性外,还可使用ActiveX控件属性浏览器或属性页设置控件的上述属性。

将LabVIEW作为ActiveX服务器

从其他应用程序,可通过ActiveX调用访问LabVIEW应用、VI、控件属性及其方法。其他已启用ActiveX的应用程序(例如,Microsoft Excel)可通过LabVIEW申请属性、方法和独立的VI。此时LabVIEW用作ActiveX服务器。

例如,可以在Excel电子表格中嵌入一个VI图形,在该电子表格中VI的输入端中输入数据并运行该VI。当运行该VI时,数据被绘制到该图形上。

对自定义ActiveX自动化接口的支持

写入使用LabVIEW访问LabVIEW ActiveX服务器的属性和方法的第三方ActiveX客户端时,可访问该服务器开放的自定义接口。此时无需使IDispatch。

但是,ActiveX服务器的开发者必须确保这些自定义接口中的属性和方法的参数数据类型为自动化(IDispatch)数据类型。开发者必须确保这些参数使用自动化(IDispatch)数据类型,满足通过一个对象开放多个端口,而不是通过多个对象开放端口。非自动化数据类型的情况下,必须为每个连接的对象创建连接。在LabVIEW环境中也可以使用这些接口。

采用常量设置ActiveX VI中的参数

ActiveX节点中的某些参数是一个包含若干有效值的离散列表。在下拉列表常量中选择描述性的名称来设置这些参数值。

创建ActiveX VI时如需访问下拉列表常量,右键单击接收该数据值节点的参数并创建常量。下拉列表常量中的选项取决于传递给该节点的引用句柄。要查看相应的数值,右键单击该下拉列表常量,从快捷菜单中选择显示项»数字显示

以下程序框图使用了下拉列表常量和数值常量来设定参数值。程序框图访问Microsoft Excel应用程序并执行方法,索引参数包含几个选项。选中选项时,LabVIEW分别显示该选项对应的数值。

默认情况下(下列程序框图所示),LabVIEW在下拉列表常量旁边的框内显示当前选中项MicrosoftAccess的数值。

用户可选择在数值常量中显示其他选项的数值。在下列程序框图中,LabVIEW在连线至索引输入端的数值常量中显示选项的数值。

加载带有已升级ActiveX类型库的VI

如加载VI的ActiveX类型库的主版本发生改动,LabVIEW将打开一个警告对话框,将改动告知用户。如加载VI的ActiveX类型库的次版本号或时间标识发生改动,加载完毕后,该VI的标题栏和窗口菜单的打开VI列表中将出现一个星号。保存VI后,星号消失,直到下次修改时才出现。