当 运行 在 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
代理的安全设置为
- 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 图像格式。不应依赖它来支持其他格式,尽管它们可能看起来受支持,具体取决于系统配置。
我有一个 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
代理的安全设置为
- 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 图像格式。不应依赖它来支持其他格式,尽管它们可能看起来受支持,具体取决于系统配置。