1

我有一个问题:我想从 lotusscript 代码运行一个文件:

    Dim result As Integer
    result = Shell("D:\testF.dsx", 1)

我收到以下错误:非法函数调用。

如果我想从公式中执行它,它可以工作:

@Command([执行]; "D:\\testF.dsx")

非常感谢!

4

3 回答 3

3

我在带有 PDF 文件的 Lotus 脚本中的 shell 函数遇到了同样的问题。我的解决方法是使用 Windows 脚本主机来启动文件。我很确定这也可以解决您的问题。

Set objShell = CreateObject("WScript.Shell")
returnValue = objShell.Run("d:\testF.dsx", 3, false)enter code here
于 2013-12-10T15:57:58.430 回答
1

无法“执行”文本文件。通常没有为 dsx- 文件定义“运行”函数。

你可以这样做:

Dim result as Integer
result = Shell("notepad.exe D:\testF.dsx", 1)

或者找出哪个程序链接到dsx(通过注册表)并以文件名作为参数执行相应的exe。如果文件名包含空格,则必须将其括起来:

Dim result as Integer
result = Shell({notepad.exe "D:\testF.dsx"}, 1)

阅读您的最后一个问题,这种方法肯定不适合您的要求。你必须使用“打开”来处理文件......就像 Per Hendrik 在他的回复中告诉你的那样。

于 2013-09-03T09:20:22.580 回答
0

我在将参数传递给 Outlook 时遇到了类似的问题。在某些 Windows 机器上,这个 @Formula 运行良好:

@Command([Execute]; "Outlook.exe"; "/recycle")

在 Windows 终端服务器上,它导致 Outlook 无法解析“/recycle” LotusScript 中的 Shell 命令甚至无法找到 Outlook.exe,因为它不在 PATH 中。

Ralf 的代码在这方面帮助了我。“WScript.Shell”似乎能够与 Windows 注册表设置进行交互。无论如何,这是用于激活打开的 Outlook 窗口的代码。

Dim objShell, returnValue
Set objShell = CreateObject("WScript.Shell")
returnValue = objShell.Run("outlook.exe /recycle", 3, False)
于 2014-11-18T23:49:25.170 回答