感谢目前为止提供的所有帮助。我能够将$ Email变量发送到stdio流并在vb脚本中接收它。我现在遇到一些代码
的问题Option Strict On
Imports MySql.Data.MySqlClient
Imports System.Runtime.Serialization
Module jrConnect
Sub Main(ByVal cmdArgs() As String)
Dim returnValue As Integer = 0
' See if there are any arguments.
If cmdArgs.Length > 0 Then
For argNum As Integer = 0 To UBound(cmdArgs, 1)
Console.Write("your email address is " & cmdArgs(argNum))
If cmdArgs(argNum) <> "" Then
Dim email As String = cmdArgs(argNum)
Console.Write("Your email is " & email)
End If
Next argNum
End If
Dim cs As String = "*********"
Dim conn As New MySqlConnection(cs)
Dim entID As String
Try
conn.Open()
Dim stm As String = "SELECT ***** FROM **** WHERE email =" & "'" & email & "'"
Dim cmd As MySqlCommand = New MySqlCommand(stm, conn)
Dim reader As MySqlDataReader = cmd.ExecuteReader()
While reader.Read()
entID = reader.GetString(0)
End While
reader.Close()
Dim stm2 = "SELECT ***** FROM ****** WHERE ***** = " & entID
Dim cmd2 As MySqlCommand = New MySqlCommand(stm2, conn)
Dim reader2 As MySqlDataReader = cmd2.ExecuteReader()
Dim counter As Integer = 0
While reader2.Read() And counter < 3
Console.WriteLine(reader2.GetString(0) & "%")
counter = counter + 1
End While
reader.Close()
Catch ex As MySqlException
Finally
conn.Close()
End Try
End Sub
End Module
它会正确打印电子邮件地址,但是当它在sql语句中调用电子邮件地址时,它会声明“未声明电子邮件”是否在“Next argNum”命令中更改了它的值?它只将电子邮件写入控制台一次。如果有必要,这是我的NSIS脚本。
Outfile "test.exe"
Section
SetOutPath $DOCUMENTS/
Var /GLOBAL Email
StrCpy $Email "spkelly8@gmail.com"
nsExec::ExecToLog '"C:path/vbapp.exe" $Email'
Pop $1
Pop $2
DetailPrint $1
DetailPrint $2
SectionEnd
答案 0 :(得分:1)
来自NSIS手册:
nsExec will execute command-line based programs and capture the output
without opening a dos box
你的console.Readline
会期望某种交互,因为它没有连接到stdin / stdout,所以会失败。由于您不想要DOS框,并且您想通过stdin发送电子邮件字符串而不是手动输入,请使用ExecDos::exec
ExecDos::exec /TIMEOUT=2000 "$DOCUMENTS\VBApp.exe" "$Email$\n"
请注意$
前面的\n
,以便NSIS发送文字新行而不是字符串\n
答案 1 :(得分:0)