0

これまでご協力いただきありがとうございました。$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 ステートメントで電子メール アドレスを呼び出すと、「電子メールが宣言されていません」と表示されます。「次の argNum」コマンドでその値を変更していますか? 電子メールをコンソールに 1 回だけ書き込みます。必要に応じて、これも私の 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
4

2 に答える 2

1

NSISマニュアルから:

nsExec will execute command-line based programs and capture the output
without opening a dos box

ある種console.Readlineの相互作用が期待され、標準入力/標準出力に接続されていないため、失敗します。DOSボックスが必要ないため、電子メール文字列を手動で入力するのではなく、stdin経由で送信したい場合は、次を使用しますExecDos::exec

ExecDos::exec /TIMEOUT=2000 "$DOCUMENTS\VBApp.exe" "$Email$\n"

for NSIS が文字列ではなくリテラルの改行を送信する$前に注意してください\n\n

于 2012-10-17T19:47:52.407 に答える
0

stdin から読み込もうとしていますが、nsExec は stdin から読み込めるデータを提供しません。代わりにコマンドラインを解析するように VB プログラムを変更するか、子プロセスが stdin からデータを取得する必要がある場合はExecDosまたはExecCmdを使用します...

于 2012-10-17T19:53:19.207 に答える