调用在sysWOW64中注册的32位COM组件方法失败并显示错误消息:
“方法OleVarToLsVal中的类型不匹配,未知发现,未知 预期“
它的win7 64位,但Notes客户端默认安装为32位应用程序。代码如下:
dim c as Variant
dim n as Variant
set c = createobject("MSWC.counters")
n = c.Get("xx")
调试调用时,使用“isObject(c)”设置和测试对象,(尽管您无法在LotusScript调试中详细检查每个方法/属性)。
该方法应该返回一个原语long。我已经尝试设置n那么长,按住值,输入值,参数,strconv参数,使用变量作为参数,都无济于事。
WScript VBS主机运行的完全相同的代码(在syswow64中)按预期运行代码。
所以,有人知道吗:
感谢任何帮助 - 谢谢。
答案 0 :(得分:0)
解决这个问题的最简单且最有效的方法是与IBM合作开设PMR。他们应该能够很快回答这个问题。
答案 1 :(得分:0)
好吧,7 年过去了(而且已经严重过时了!)只是为寻找答案的任何人提供的更新......需要一些 Notes 设置,并不是所有的 COM/Active-X 组件或数据类型都受 LotusScript 支持,因此即使 Notes 设置正确,您仍然可能无法访问/使用任何特定组件或组件中的某些方法。
必须允许用户在服务器文档安全部分的“签署或运行不受限制的方法和操作:”中运行不受限制的代理/代码。
Notes 客户端执行控制列表 ('ECL') 必须默认允许访问“外部程序”或代码签名者。如果未授予外部访问权限,ECL 警告框将要求用户继续。
如果您尝试执行不受支持的方法或不受支持的数据类型,则 LotusScript 或 COM/Active-X 错误报告将发出更多错误。 “CreateObject”的 Notes 开发人员帮助文件提供了有关不受支持的数据类型的更多详细信息:
LotusScript 不支持通过名称而不是通过它们出现的顺序来识别 OLE 方法或属性的参数,LotusScript 也不支持单独使用 OLE 名称(没有显式属性)来识别默认属性. OLE 方法的参数和通过引用传递的布尔、字节和日期类型的属性的结果未指定。 LotusScript 不支持这些数据类型。
依赖“默认属性”访问默认方法是一个常见的错误,需要您格外注意组件细节。很容易假设该组件不起作用,但实际上您只是没有正确使用它。
测试此问题的一种方法是尝试打开所有 Windows 计算机(可能是其他计算机?)上可用的公共对象,可能是“FileSystemObject”(FSO) 或 VbScript“regExp”组件。如果这些有效,您可以在此基础上再接再厉。为您的客户端安装获取正确的 32/64 位注册是测试/获得正确的另一个要素。
对于我的问题,我怀疑我使用了不受支持的方法或数据类型,并且偶尔在 Notes 中使用了 COM/Active-X,总体来说一切正常。