COM 组件支持库,
虽然这是内置库,但例外的是这个库不会自动导入,
如果在已经导入win.ui 的界面线程,win.ui 会负责自动导入 com 库
使用手册相关文档
绑定事件监听对象
事件监听对象用 com.ImplInterface 创建
返回一个表示事件连接点的 cookie,
可用于释放绑定的 com.ReleaseConnection 函数。
参数 @1 指定的对象如果被释放回收,事件监听也会自动解除。
注意 excel.ActiveWorkbook 这种动态属性应当先保存到变量,再绑定事件
注册事件接收表
此函数返回sink,cookie 共2个返回值,
sink为事件接收器,cookie是一个数字值,用来记录连接点,
这2个返回值可以用于 com.ReleaseConnection 释放事件表。
参数 @2 指定一个 table 类型的表对象
该表对象被转换为COM对象的默认事件监听器并实现默认事件接口,
如果需要显式指定接口类型请使用 com.AddConnection。
com.Connect 绑定的事件监听表会被强引用到 COM对象
如果COM对象与事件接收表存在循环引用自身会导致无法释放,
可用 com.ReleaseConnection 手动释放事件绑定,
或者改用 com.ConnectWeak,com.CreateEmbedEx 也可以避免该问题。
参数 @1 指定的对象如果被释放回收,事件监听也会自动解除。
注意 excel.ActiveWorkbook 这种动态属性应当先保存到变量,再绑定事件
注册弱引用自身的事件接收表
此函数返回sink,cookie 共2个返回值,
sink为事件接收器,cookie是一个数字值,用来记录连接点,
这2个返回值可以用于 com.ReleaseConnection 释放事件表
参数@2指定一个table类型的表对象
该表对象被创建为COM对象的默认事件接口并注册为事件接收器。
在COM对象销毁前,com.Connect绑定的事件接收表会被强引用并被阻止回收,
如果COM对象与事件接收表存在循环引用自身会导致COM对象无法释放,
com.ConnectWeak函数通过创建一个中间代理对象弱引用事件接收表,可以避免该问题,
但要注意回调事件访问的owner对象是代理对象,使用owner.realSink可以获取真正的事件表
创建 COM 控件对象,
通常不会直接使用此函数,
应改用窗口或控件对象提供的 CreateEmbed 或 CreateEmbedEx 函数,
或者 com.lite 提供的 CreateEmbed 或 CreateEmbedEx 函数
创建 COM 控件对象并嵌入 @formOrCtrl 指定的窗体或控件窗口
@comObject 参数指定 com.IDispatch 对象,
@embedObject 用一个表指定容器对象
创建 COM 控件对象并嵌入 @formOrCtrl 指定的窗体或控件窗口
@progId 指定要创建的 COM 控件的 ProgID 或者 CLSID
@embedObject 用一个表指定容器对象
容器对象可以是一个空的表用于接管 COM对象
函数返回该容器对象并添加成员_host,_object,_form
_object 成员是创建的 COM对象 ,
_form 是传入参数中的 @formOrCtrl,
_host 是 COM 控件宿主对象,提供部分 OLE 接口函数,
容器对象可通过添加成员函数响应 COM对象 事件,
容器对象的另主要作用是充当访问 COM对象 的中间代理对象。
通常使用 util.metaProperty 为容器对象添加属性元表,
属性元表可拦截属性、函数调用并调用 _object 对象
创建 COM 控件,返回控件容器对象。
容器对象的 object 成员是创建的 COM 对象。
容器对象的 __event_ 成员为 COM 对象默认事件监听器。
返回容器已添加元表,可通过容器对象的成员代理访问 COM 对象成员。
也可以通过指定容器对象的成员函数响应 COM 对象事件
创建 COM 控件,返回控件容器对象。
此函数返回的容器已添加元表并创建代理以直接访问 COM对象,
也可以通过指定容器对象的成员函数响应 COM 对象事件。
@clsId 指定控件 CLSID 或者 ProgID 。
可选用 @ctrlOrForm 指定宿主窗口,
如果指定了窗主窗口,在窗口销毁时解除默认事件监听器并释放 COM 对象。
可选在参数 @embedObjec 中指定 COM对象 绑定的容器对象
创建并返回 com.IDispatch 对象,参数@1可指定 CLSID 或 ProgID,
创建失败会抛出异常,使用 com.TryCreateObject 代替不会抛异常
执行OLE对象的动词,
参数2可使用_OLEIVERB_前缀常量
输出 COM对象 类型信息、成员函数列表,
输出到控制台可使用 console.dump 函数。
调用 com.tlbDoc.dump 函数可打印 COM对象 更详细的类型库信息
返回一个字符串
包含 COM对象 类型信息、成员函数列表,
此函数不会输出到控制台,
输出到控制台请使用 console.dump 函数
获取枚举对象,
参数 @1 指定 COM对象
使用 GUID 指定接口获取 com.IUnknown 托管指针
参数@1可是任何可以转换为指针的对象,与API参数规则相同,
可选在参数@2使用字符串或GUID指定接口
该指针自动管理引用计数,无须手动释放
从已运行的实例获取并返回 com.IDispatch 对象,
参数@1可指定CLSID或ProgID,也可指定打开的文件路径,如 doc 文件,
获取对象失败会抛出异常,使用 com.TryGetObject 代替不会抛异常。
如果当前进程与目标 COM 服务进程不具有相同权限,则会报错『无效的操作』。
参数可指定一个或多个CLSID/ProgID,
首先调用 com.TryGetObject 尝试获取并返回已运行的实例,
如果失败则调用 com.TryCreateObject 函数尝试创建并返回对象,
创建失败返回null,错误信息,不会抛出异。
如果当前进程与目标 COM 服务进程不具有相同权限,
则 TryGetObject 不能获取该进程创建的 COM 对象。
获取 IDispatch 指针
该指针返回前已调用 AddRef 增加 COM 引用计数,
不再使用时必须及时调用 com.Release 释放
使用 GUID 指定接口获取原生指针,
该指针返回前已调用AddRef增加COM引用计数,
不再使用时必须及时调用 com.Release 释放,
参数@1可是 COM对象 、com.IUnknown对象、或可转换为指针的对象
参数@2可用文本格式表示,省略时默认为IID_IUnknown
返回类型信息
将 aardio 对象转换为支持 IDispatch 接口的 COM对象 ,
参数@1可以是普通表对象、函数对象、类对象、cdata对象。
如果参数@1是函数或类对象,回调时onwer参数为 dispIdMember 数值。
如果参数@1是表对象转换为 COM对象 ,直接作为 COM 函数调用时支持 _call元方法,
如果未定义 _call元方法则调用表对象中索引为0的函数
通过 COM 接口调用表的成员函数时支持 _get 元方法,并将 onwerCall 参数设为 true。
表对象或表的成员函数作为COM函数回调时 onwer 参数总是指向表对象自身,
dispIdMember小于0时总是调用表索引中对应的函数,
在与 COM 接口交互时,
无法自动转换为 COM对象的 aardio 对象也会调用此函数自动转换
使用一个 table 表转换为 @interfaceName 指定的接口对象
例如:com.ImplInterface( flash.callevent ,"ShockwaveFlash.ShockwaveFlash","_IShockwaveFlashEvents")
使用类型库实现com接口
检测参数是否一个托管 com.IUnknown 指针
返回参数 @memberName 指定的名字是否 @comObject 参数指定 COM 对象的成员。
检测参数是否一个 .Net 原生对象,是则返回非 0 值。
如果是普通 .Net 对象返回 1,如果是 DispatchableObject 对象返回 2
检测参数是否一个动态 COM对象(IDispatch 对象)
加载类型库
参数可以是CLSID、类型库路径、或包含类型库资源的组件路径
创建COM控件,可选使用参数@3指定tlb类型库路径
此函数详细用法请参考标准库com.activeX的源代码
创建COM对象,可选使用参数@3指定tlb类型库路径
此函数详细用法请参考标准库com.activeX的源代码
查询 IDispatch 接口、并创建 com.IDispatch 对象
查询 IDispatch 接口、并创建 com.IDispatch 对象
如果成功则调用 com.Release 释放传入的 IUnknown 指针
使其引用计数减一,释放的指针不应再使用,
返回的 COM对象 会增加引用计数,
并在对象释放时自动减一
释放 COM 对象、.NET 对象、IUnknown 指针、com.interface 创建的对象。
如果参数 是 pointer 类型指针调用 IUnknown 接口 Release 函数使引用计数减一
如果参数是 cdata 内核对象或自元表中返回 cdata,则调用 cdata 的 _gc 析构函数
参数 @1 为 null 抛出异常
释放默认事件监听器,
@comObject 指定要解除事件监听器的 COM对象 ,
默认事件监听器由 com.Connect 函数绑定
即使不调用此函数,
在 COM对象 销毁后所有事件监听器会自动释放
释放事件监听器,
@comObject 指定要解除事件监听器的 COM对象 ,
@eventSink 可以是 com.ImplInterface 创建的事件监听器,
也可以使用 com.Connect 的第一个返回值
@cookie 来自 com.AddConnection 的返回值
即使不调用此函数,
在 COM对象 销毁后所有事件监听器会自动释放
将aardio对象转换为COM对象,
再将该 COM对象 转换为aardio对象
创建 COM 安全数组( SAFEARRAY ),
可增加一个或多个参数指定数组成员,
返回的数组兼容普通数组,但 数组@._safearray_type 指定了COM类型,
COM 函数传入传出 COM 数组均使用此格式,
元素类型不指定时默认为VT_VARIANT,VT_VARIANT数组兼容 VBS 数组
类型为 VT_ILLEGAL 则单个值与数组元素类型均自动设定,这是调用 COM 接口的默认规则。
纯字符串数组默认元素类型为 _VT_BSTR,纯数值类型默认元素类型为 _VT_R8(double),
IDispatch 对象数组元素类型为 _VT_DISPATCH,
其他数组元素类型默认为 _VT_VARIANT
如果传入参数为 SafeArray 数组,
返回一个表示数组元素类型的数值,该值应以 VT 前缀的常量进行比对
支持 com.SafeArray 创建的数组,或 COM 函数返回的数组,
参数如果是 com.SafeArrayV 创建的 SafeArray 数组封装对象,返回 null,
参数如果是 com.Variant 创建的 Variant 对象,返回 null,
参数是其他类型值,也返回 null
返回 SAFEARRAY 数组包装对象,
该对象的 _safearray 属性指向参数传入的数组,_type 指向数组类型,
注意此函数返回的对象不是 SafeArray 数组,也不会修改传入的数组,
返回对象仅用于在调用 COM 函数时自动转换为 SAFEARRAY 数组。
参数@1可以是数组,字符串,buffer,也可以指定null值并转换为空数组,
元素类型不指定时默认为VT_VARIANT,VT_VARIANT数组兼容 VBS 数组。
类型为 VT_ILLEGAL 则单个值与数组元素类型均自动设定,这是调用 COM 接口的默认规则,
纯字符串数组默认元素类型为 _VT_BSTR,纯数值类型默认元素类型为 _VT_R8(double),
IDispatch 对象数组元素类型为 _VT_DISPATCH,
其他数组元素类型默认为 _VT_VARIANT
设置调用该 COM对象 时 aardio 数组参数转 COM 数组的默认类型,
参数只能设为 _VT_VARIANT 或 _VT_ILLEGAL,默认已设置为 _VT_ILLEGAL。
此设置值会自动传递到该 COM对象 返回的其他 COM对象 。
此选项设为 _VT_ILLEGAL 将自动调整为合适的类型,规则如下:
纯字符串数组类型设为 _VT_BSTR,
纯数值数组类型设为 _VT_R8(double),
其他数组类型设为 _VT_VARIANT,
这也是所有 COM对象 的默认设置。
如果要创建明确指定 COM 类型的数组参数,
可使用 com.Variant,COM.SafeArray,COM.SafeArrayV,com.int...等函数
显示帮助
参数可指定一个或多个CLSID/ProgID,逐个测试直到创建成功,
成功返回 com.IDispatch 对象,
创建失败返回null,错误信息,不会抛出异常,
参数@1可指定 CLSID或 ProgID
从已运行的实例获取并返回 com.IDispatch 对象,
参数可指定一个或多个 CLSID/ProgID,也可指定要打开的文件路径,如doc文件,
创建失败返回null,错误信息,不会抛出异常。
如果当前进程与目标 COM 服务进程不具有相同权限,则会返回 null。
创建 VARIANT 变体对象。
可用于普通 COM对象 传值或传址参数。
可用于 .NET 普通输入参数,不支持 .NET 输出参数(可改用 dotNet.object)。
可用于 API 函数中 VARIANT* 指针类型参数。
可选指定一个初始值,可以是任意适用于 COM 参数的值或数组。
参数 @2 可选用一个 VT 前缀的整数常量指定期望的 COM 变体类型。
变体类型指定数值,且参数 @1 为无元表的空表或非空数组时都会处理为 COM 数组。
若省略类型或设为 _VT_VARIANT,则单值自动选择类型,未明确类型的数组设为 VT_VARIANT。
如果变体类型为 _VT_ILLEGAL,则单值与数组均自动选择类型,此为 COM 接口默认规则。
单整数默认类型为 _VT_I4(int),小数默认类型为 _VT_R8(double),
纯字符串数组默认为 _VT_BSTR 数组,纯数值类型默认为 _VT_R8(double)数组,
其他数组类型默认为 _VT_VARIANT 数组。
可选参数 @3 如果设为 true,就可以用于 COM 输出参数。
创建 VARIANT 变体对象
如果参数@2为 true ,则参数 @1 必须为 VARIANT 指针。
调用 VariantCopyInd 函数拷贝参数指定的源 VARIANT 对象
定义数值类型为 8 位整数,
作为输入参数可兼容 .Net System.SByte 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 64 位浮点数,
此函数返回 com.Variant 对象。
作为输入参数可兼容 .Net System.Double 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
注意普通数值传入 COM 参数时,
整数默认转为32位整数,小数默认按double类型处理
for index,obj in com.each() {
} //迭代遍历com集合对象,参数可以直接传入COM迭代器
for object,interface,name,index in com.eachRunning() {
/*遍历ROT(运行对象表)
参数 @interface 可选限定接口名(完全匹配),参数 @name 可选用模式串限定显示名称。
返回 object为 COM 对象 ,interface 为接口名称(可能为 null),name 为显示名称。index 为序号*/
}
com.enumRunning(
function(displayName,object){
/*枚举ROT(运行对象表)并获取COM对象,
此回调函数返回true中止枚举*/
}
)
对传入的 COM对象 调用 com.each 创建迭代器,
执行该迭代器并返回第一次返回的 COM对象 ,
如果传入参数为 null 或 false 则直接返回
定义数值类型为 32 位浮点数,
作为输入参数可兼容 .Net System.Single 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 32 位整数,
此函数返回 com.Variant 对象。
作为输入参数可兼容 .Net System.Int32 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
注意普通数值传入 COM 参数时,
整数默认转为32位整数,小数默认按double类型处理
检查并返回参数指定的对象是否 COM 迭代器
定义数值类型为 64 位整数,
作为输入参数可兼容 .Net System.Int64 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 8 位无符号整数,兼容 .Net System.Byte 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 32 位无符号整数,
作为输入参数可兼容 .Net System.UInt32 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 64 位无符号整数,
作为输入参数可兼容 .Net System.UInt64 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 16 位无符号整数,兼容 .Net System.UInt16 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
定义数值类型为 16 位整数,
作为输入参数可兼容 .Net System.Int16 类型数值。
参数 @1 可以为数值或数组,
参数 @2 为 true 则用于 COM 输出引用参数。
此函数返回 com.Variant 对象。
复制对象
向后获取并返回 n 个元素的值
重置到开始位置
跳过 n 个元素的值,成功返回 true
函数总数
GUID
实现接口总数
属性值总数
类型,
值为"coclass","enumeration","interface","dispinterface"
"alias","union","record","module"之一
appobject
cancreate
control
dispatchable
hidden
oleautomation
对象的描述
对象接口名称
参数数量
可选参数数量
描述
是否动态接口函数
数值,帮助上下文
帮助
调用类型
可能的值为"_get","_set","_setByRef","function"
成员ID
函数名
是否不适合动态调用
返回值类型,字符串
返回值类型,数值,
数值含义与 com.Variant 对象的 vt 字段相同
参数描述数组
返回一个字符串,
列出此类型所有的成员
返回文档信息
返回函数描述
注意超始索引为1
返回实现接口
注意超始索引为1
实现接口类型属性表
返回表包含字段default,source,restricted,defaultVTable,都是布尔值,
注意超始索引为1
返回类型属性
返回类型库
COM变量/常量描述
注意超始索引为1
导出常量名值对组成的表。
可以使用常量名作为 COM 对象的成员名获取常量值
导出全部枚举类型,
返回一个表,键为枚举类型名,值为该类型的枚举名值对组成的表。
通常枚举名值对也是 COM 常量名值对,
可以使用枚举名字(不用指定枚举类型名)
作为 COM 对象的成员名获取枚举值
返回文档信息
返回类型信息
注意超始索引为1
类型信息总数
显示帮助
参数的默认值
是否输入参数
是否可选参数
是否输出参数
参数类型,字符串
参数类型,数值,
数值含义与 com.Variant 对象的 vt 字段相同
COM变量名
COM常量值
只读属性,获取BSTR指针
清空值
调用VariantClear函数清空值并重新初始化对象
调用了此函数以后,对象的vt置为0,
其他所有成员置为null,包括clear函数也置为null,
除非通过value属性重新赋值,clear函数才会变为可用
即使不调用这个函数,
aardio在析构回收对象时也会自动调用VariantClear函数释放资源
只读属性,获取SAFEARRAY指针
只读属性,获取IDispatch指针
只读属性,获取IUnknown指针
读写值遵守com与aardio间的数据类型转换规则
Variant类型,数值,
只读属性,不可修改
COM 对象的容器窗口。
这是一个 win.form 对象或者 win.form 对象内部的控件对象。
原生 COM 控件对象。
原生 COM 控件对象不等于事件监听表,一般不用于直接绑定 COM 事件。
应当用 com.Connect 绑定事件监听表。
CreateEmbedEx 或 CreateEmbed 返回的容器对象也可自动绑定 COM 事件。
COM 控件宿主对象。
提供部分 OLE 接口函数,一般没必要直接使用这个对象。
自动调整控件窗口大小
关闭
执行指定的动词命令
解析快捷键,
如果是快捷键返回真值