当 运行 在 Domino 服务器上时,用于 WIA 的 LotusScript 代理会导致错误

LotusScript agent for WIA causes error when run on Domino server

我有一个 LotusScript 代理,在新邮件到达后 运行 秒。代理 returns:

err 208 Cannot create automation object

在服务器上启用时,但在使用 Notes 客户端从所选文档的菜单中更改为 运行 时 运行 没问题。

Dim oImage As Variant
Dim oProcess As Variant
Dim lngH As Long, lngW As Long

'Build the object   -- works from Notes client but not from server agent...
Set oImage = CreateObject("WIA.ImageFile")

'load it    
oImage.LoadFile sFileName
lngH = oImage.Height
lngW = oimage.Width

尝试 CreateObject("WIA.ImageFile")

时出现错误

wiaaut.dll 文件驻留在 domino\data 目录中 -- 以及 notes\data目录。我不确定是否需要或如何设置任何权限。

LotusScript 代理使用服务器文档中列出的 Domino 目录中的一个 ID 进行签名

Sign or run unrestricted methods and operations

代理的安全设置为

  1. Allow restricted operations with full administrator rights.

此签名 ID 与执行受限操作的其他代理配合良好。

我认为错误是特定于 WIA 对象的。有什么想法吗?

如果它在客户端运行,它必须使用 32 位 DLL(根据@FruitySoup 的评论)。同一个 DLL 无法在 64 位代码中运行。

此外,createObject 依赖于注册表项。 AFAIK,将其放入数据目录实际上应该没有任何区别。在我的 64 位机器上,可以在 HKEY_CLASSES_ROOT\WIA.ImageFile, HKEY_LOCAL_MACHINE\ SOFTWARE\Classes\WIA.ImageFile, HKEY_CLASSES_ROOT\Wow6432Node\CLSID{long id here}\InProcServer32 中找到注册表项。这些键非常清楚地表明它是 32 位软件。

要使用 CreateObject() 方法使用 DLL 文件中的函数,您不仅需要将 DLL 文件复制粘贴到服务器计算机中的文件夹中,还需要在计算机中注册 DLL 文件。

先尝试使用"Regsvr32"命令注册DLL文件。如果是 32 位或 64 位机器,注册 DLL 命令语法可能会因机器类型而异。

http://www.wikihow.com/Register-a-DLL

看看这是否有帮助。

来自以下站点的 dll 文件附带的 Readme.txt 文件说您需要将 dll 文件复制到 System32 文件夹并在使用 dll 之前注册它。

http://vbnet.mvps.org/index.html?code/imageapi/mswaidll.htm

============

ReadMe.txt

入门

To install the Windows Image Acquisition Library v2.0, 
copy the contents of this compressed file to a directory on your hard drive.

Copy the wiaaut.chm and wiaaut.chi files to your Help directory (usually located at C:\Windows\Help)

Copy the wiaaut.dll file to your System32 directory (usually located at C:\Windows\System32)

From a Command Prompt in the System32 directory run the following command: 

    RegSvr32 WIAAut.dll 

勘误表

使用 VideoPreview 控件时,某些网络摄像头驱动程序存在一个错误,会导致下面示例中的 ExecuteCommand 调用在 VideoPreview 暂停时挂起。

Dim Itm 'As Item

VideoPreview1.Pause = True
Set Itm = VideoPreview1.Device.ExecuteCommand(wiaCommandTakePicture)

WindowsImage Acquisition Library v2.0 仅支持 PNG、BMP、JPG、GIF 和 TIFF 图像格式。不应依赖它来支持其他格式,尽管它们可能看起来受支持,具体取决于系统配置。