Vb6 如何将VBScript的返回值获取到automation anywhere?

Vb6 如何将VBScript的返回值获取到automation anywhere?,vb6,rpa,automationanywhere,Vb6,Rpa,Automationanywhere,下面是我尝试处理的示例代码,它抛出了一个错误代码1025。我试图寻找一些可以解决这个问题的方法,但没有找到任何有用的信息 我只想将值“num3”返回到Automation anywhere。我不确定是否使用正确的命令行返回值(WScript.StdOut.Write)。如果我使用了错误的命令,请教我或指向一个链接,在那里我可以学习写命令行 Dim num1, num2, num3 As Integer Private Sub Form_Load() num1 = 2 num2 = 5 num

下面是我尝试处理的示例代码,它抛出了一个错误代码1025。我试图寻找一些可以解决这个问题的方法,但没有找到任何有用的信息

我只想将值“num3”返回到Automation anywhere。我不确定是否使用正确的命令行返回值(
WScript.StdOut.Write
)。如果我使用了错误的命令,请教我或指向一个链接,在那里我可以学习写命令行

Dim num1, num2, num3 As Integer

Private Sub Form_Load()

num1 = 2
num2 = 5
num3 = num1 + num2


WScript.StdOut.Write(num3) ' Is this the right command ?

End Sub

如何将VBScript的返回值获取到automation anywhere?

您需要在
Project->References…
菜单中添加对
Windows脚本主机对象模型
类型库的引用,然后保存您的项目
.vbp
文件并在记事本中打开,并在末尾附加以下两行:

[VBCompiler]
LinkSwitches=/SUBSYSTEM:CONSOLE
保存
.vbp
文件,在VB6 IDE中重新打开项目,并将以下代码粘贴到
表单1

Option Explicit

Private StdOut                  As TextStream

Dim num1, num2, num3 As Integer

Private Sub Form_Load()
    With New FileSystemObject
        Set StdOut = .GetStandardStream(1)
    End With

    num1 = 2
    num2 = 5
    num3 = num1 + num2

    StdOut.WriteLine num3
End Sub
将项目编译为
Project1.exe
,并从命令提示符启动它,以在控制台中获得如下内容:

C:> Project1.exe
7
。然后显示
Form1
,因此应用程序不会立即终止

对于真正的控制台VB6应用程序,请尝试将代码放入标准
.bas
模块的
子主


这是上面项目的压缩编码:

您需要在
project->References…
菜单中添加对
Windows脚本主机对象模型
类型库的引用,然后保存您的项目
.vbp
文件并在记事本中打开,并在末尾附加以下两行:

[VBCompiler]
LinkSwitches=/SUBSYSTEM:CONSOLE
保存
.vbp
文件,在VB6 IDE中重新打开项目,并将以下代码粘贴到
表单1

Option Explicit

Private StdOut                  As TextStream

Dim num1, num2, num3 As Integer

Private Sub Form_Load()
    With New FileSystemObject
        Set StdOut = .GetStandardStream(1)
    End With

    num1 = 2
    num2 = 5
    num3 = num1 + num2

    StdOut.WriteLine num3
End Sub
将项目编译为
Project1.exe
,并从命令提示符启动它,以在控制台中获得如下内容:

C:> Project1.exe
7
。然后显示
Form1
,因此应用程序不会立即终止

对于真正的控制台VB6应用程序,请尝试将代码放入标准
.bas
模块的
子主


这是上面项目的简图:

除了给出的答案,请注意

Dim num1, num2, num3 As Integer
。。。实际上是指(除非在其他地方使用了
Defxxx
语句并将其忽略)


。。。这可能不是你认为的意思。

除了给出的答案,请注意

Dim num1, num2, num3 As Integer
。。。实际上是指(除非在其他地方使用了
Defxxx
语句并将其忽略)


。。。这可能不是你认为的意思。

这个问题有点模棱两可,但我会尽力回答

如果要输出一个数字(退出代码) 就这样做,

' https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d6e76731-8e3b-465f-9d5a-12c6498d6b6c/how-to-return-exit-code-from-vb6-form?forum=winforms
Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
' (then in some function)
ExitProcess 666666 ' whatever number to output to the other process
如果要输出到标准输出(控制台)

这有点棘手。VB6不是天生设计成这样工作的。然而,有一个鲜为人知的解决办法,我修改并稍微优化了(讽刺的是,对于CLI的使用)他们的代码,现在可以使用了。下面是如何部署它

  • 复制回购协议
  • CLI.bas
    复制到项目中,然后将
    CLI.bas
    添加到项目中。现在您可以使用CLI函数了。比如说
  • 现在您可以使用这些函数,如果您的代码。确保先调用
    CLI.setup
    。我建议您第一次在
    Form1\u Load()
  • 通过VB6套件编译可执行文件,但这还不是故事的结尾
  • 您编译的应用程序必须进行修补才能在命令行模式下工作。为此,请将
    CD
    放入您调用并执行的
    AMC\u patcher-CLI
    文件夹中
  • amc“C:/Projects/My supa CLI project/Project1.exe”3

    在哪里
    “C:/Projects/My supa CLI project/Project1.exe”
    -是应用程序exe的路径


    或者,对于修补步骤,使用。它的可扩展性较差,但同样坚固

    这个问题有点含糊不清,但我会尽我所能回答它

    如果要输出一个数字(退出代码) 就这样做,

    ' https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d6e76731-8e3b-465f-9d5a-12c6498d6b6c/how-to-return-exit-code-from-vb6-form?forum=winforms
    Private Declare Sub ExitProcess Lib "kernel32" (ByVal uExitCode As Long)
    ' (then in some function)
    ExitProcess 666666 ' whatever number to output to the other process
    
    如果要输出到标准输出(控制台)

    这有点棘手。VB6不是天生设计成这样工作的。然而,有一个鲜为人知的解决办法,我修改并稍微优化了(讽刺的是,对于CLI的使用)他们的代码,现在可以使用了。下面是如何部署它

  • 复制回购协议
  • CLI.bas
    复制到项目中,然后将
    CLI.bas
    添加到项目中。现在您可以使用CLI函数了。比如说
  • 现在您可以使用这些函数,如果您的代码。确保先调用
    CLI.setup
    。我建议您第一次在
    Form1\u Load()
  • 通过VB6套件编译可执行文件,但这还不是故事的结尾
  • 您编译的应用程序必须进行修补才能在命令行模式下工作。为此,请将
    CD
    放入您调用并执行的
    AMC\u patcher-CLI
    文件夹中
  • amc“C:/Projects/My supa CLI project/Project1.exe”3

    在哪里
    “C:/Projects/My supa CLI project/Project1.exe”
    -是应用程序exe的路径


    或者,对于修补步骤,使用。它的可扩展性较差,但与VB6代码一样坚固。如果是这种情况,Wscriot对象将不可用,您需要首先创建一个实例感谢您的回复,是的,这是一个VB6代码,所以WScript.StdOut.Write是正确的吗?我只需要创建一个实例?那么您想使用VB6编写toe标准输出?您正在尝试用vb6制作命令行工具吗?您所说的“自动化”是什么意思?这看起来像vb6代码。如果是这种情况,Wscriot对象将不可用,您需要首先创建一个实例感谢您的回复,是的,这是一个VB6代码,所以WScript.StdOut.Write是正确的吗?我只需要创建一个实例?那么您想使用VB6编写toe标准输出?你想发出命令吗