从IBM Notes 9调用COM组件方法失败

从IBM Notes 9调用COM组件方法失败,com,activex,lotus-notes,lotus-domino,lotusscript,Com,Activex,Lotus Notes,Lotus Domino,Lotusscript,调用在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)”进行测试(尽管在LotusScr

调用在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,设置值,设置值,设置参数,设置参数,使用变量作为参数,但都没有用

WScript VBS主机(在syswow64中)运行的代码与预期的完全相同。

那么,有谁知道:

  • Notes 9 COM值编组是否适用于任何组件
  • Notes 9 COM是否设置为识别“wow64”备用32位注册表
  • 注册表中是否有一些COM相关的封送设置我可以检查(如果有,它们是什么/在哪里)
  • 是否有一些设置告诉Notes使用32位组件(如IIS 32位兼容性选项)
  • 在主操作系统中有什么我需要做或可以做的事情来“重定向或配置”COM吗
  • 还是钞票又破了,没人在乎

  • 感谢您的帮助。

    解决此问题最简单、可能也是最有效的方法是与IBM建立PMR。他们应该能够很快地回答这个问题。

    好吧,7年过去了(而且已经过时了!)对于任何想要答案的人来说,这只是一个更新。。。需要几个Notes设置,LotusScript并不支持所有COM/Active-X组件或数据类型,因此即使Notes设置正确,您也可能无法访问/使用组件中的任何特定组件或某些方法

    必须允许用户在服务器文档安全部分的“签名或运行不受限制的方法和操作”中运行不受限制的代理/代码

    默认情况下,Notes客户端执行控制列表(“ECL”)必须允许访问“外部程序”或代码签名者。如果未授予外部访问权限,ECL警告框将要求用户继续

    如果尝试执行不受支持的方法或不受支持的数据类型,则LotusScript或COM/Active-X错误报告将发出进一步的错误。“CreateObject”的Notes developer帮助文件提供了有关不受支持的数据类型的更多详细信息:

    LotusScript不支持按名称而不是按它们出现的顺序来标识OLE方法或属性的参数,LotusScript也不支持单独使用OLE名称(没有显式属性)来标识默认属性。 对于通过引用传递的OLE方法的参数和类型为boolean、byte和date的属性,未指定结果。LotusScript不支持这些数据类型

    依赖“default属性”访问默认方法是一个常见错误,需要您特别注意组件的详细信息。很容易假设组件不工作,但实际上您只是没有正确地使用它

    测试这一点的一种方法是尝试打开所有Windows计算机(可能是其他计算机?)上可用的公共对象,可能是“FileSystemObject”(FSO)或VbScript“regExp”组件。如果这些措施奏效,你可以在这基础上再接再厉。为您的客户端安装获得正确的32/64位注册是另一个要测试/获得正确注册的元素


    对于我的问题,我怀疑我使用了不受支持的方法或数据类型,并且偶尔在Notes中使用了COM/Active-X,总体来说一切正常。

    尝试在sysWOW64:regsvr32“C:\Program Files(x86)\IBM\Lotus\Notes\nlsxbe.dll”中重新注册应用程序,并尝试在32位操作系统上运行Notes9。仍然不走运(但VBS在那台机器上也能工作);但是,错误消息强烈表明错误在Notes中,而不是在COM中。在您提出的各种问题中:#3很可能是“否”,因为VBScript宿主可以正常工作#4也很可能是“否”;AFAIK Notes只有32位,其中IIS默认为64位#5也很可能是“否”;可悲的是,这倾向于将#6视为“是”。@Eric——感谢总结——倾向于同意——目前仍然没有找到解决方案。