【问题标题】:Pass Arguments to EXE将参数传递给 EXE
【发布时间】:2013-05-24 06:42:51
【问题描述】:

我有一个带有此代码的按钮

Process.Start("start system\now.exe")

现在我想从 Texbox 传递参数,但我不知道如何。我试过了:

Process.Start("system\now.exe -connect -ip 127.0.0.1 -PORT 910 " & "-USER " & TextBox1.Text & "-PWD " & TextBox1.Text " -serial x4r7680")

但似乎不起作用。有什么想法吗?

【问题讨论】:

    标签: vb.net process


    【解决方案1】:

    您需要传入带有参数的 ProcessStartInfo 对象。有关 ProcessStartInfo 类的信息,请参阅 MSDN 文档中的页面。

    根据对文档的粗略阅读,您的示例将如下所示:

    Dim startInfo as ProcessStartInfo("system\now.exe")
    startInfo.Arguments = "-connect -ip 127.0.0.1 -PORT 910 " & "-USER " & TextBox1.Text & "-PWD " & TextBox1.Text " -serial x4r7680"
    Process.Start(startInfo)
    

    【讨论】:

    • 不起作用,如果我把整个命令(例如)它的工作,但如果我尝试从文本框中读取它们不起作用
    • 您可能希望在将参数字符串传递给 StartInfo 之前使用 stringbuilder 对其进行编译。
    【解决方案2】:

    查看ProcessStartInfo 类。一个例子:

    Dim startInfo As New ProcessStartInfo("IExplore.exe")
    startInfo.WindowStyle = ProcessWindowStyle.Minimized
    
    Process.Start(startInfo)
    
    startInfo.Arguments = "www.northwindtraders.com"
    
    Process.Start(startInfo)
    

    但您也可以使用另一个overload of the Start 方法来传递您的命令行参数。再举个例子:

    ' Start a Web page using a browser associated with .html and .asp files.
    Process.Start("IExplore.exe", "C:\myPath\myFile.htm")
    Process.Start("IExplore.exe", "C:\myPath\myFile.asp")
    

    或者在你的情况下:

    Process.Start("system\now.exe","-connect -ip 127.0.0.1 -PORT 910 " & "-USER " & TextBox1.Text & "-PWD " & TextBox1.Text " -serial x4r7680")
    

    或

    Dim startInfo As New ProcessStartInfo("system\now.exe")

    Process.Start(startInfo)
    
    startInfo.Arguments = "-connect -ip 127.0.0.1 -PORT 910 " & "-USER " & TextBox1.Text & "-PWD " & TextBox1.Text " -serial x4r7680"
    
    Process.Start(startInfo)
    

    如果TextBox1.Text 包含空格,则需要小心(取决于您的程序如何解析命令行选项),除非您将它们括在引号中,否则您最终可能会错误地解析它们。

    【讨论】:

      【解决方案3】:

      好的,我确定您遇到的问题是参数的引号“”。 此示例使用自变量参数。

      试试这个:

      Process.Start("system\now.exe", """" & "-connect -ip 127.0.0.1 -PORT 910 " & "-USER " & lblSubirLlamadasTimeInterval.Text & "-PWD " & lblSubirLlamadasTimeInterval.Text & "-serial x4r7680""")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        • 1970-01-01
        相关资源
        最近更新 更多