C#命令行参数换行在C#中失败但在python中不会。需要让C#成功

2024-09-26 22:53:47 发布

您现在位置:Python中文网/ 问答频道 /正文

Env:.net3.5visualstudio2008sp1,基于winxpsp3,python2.7。公司形象,无管理权限。在

在C#3.5中,我想把一个参数传递给一个命令行程序,这个参数包含新行。它在Python2.7中工作,但在C中不行。在

当body包含换行符时,c将截断结果,但python会正确传递它。在

Python代码

cmd = self.app_path + ' email -Subject "' + subject + '" -From "' + address_from + '" -To "' + address_to +'" -Body "' + body +'"'
cmd_result = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()

代码:

^{pr2}$

有什么想法吗?在

更新:python示例中的body和c示例中的emailBody包含相同的字符串,因为字符串在每种语言中都有表示。在

更新:注意到命令在python代码中没有正确终止。我在第2行末尾加了“+”。代码像以前一样运行。在

另外,正如您所知,名为的应用程序将body(emailBody)参数内容作为电子邮件正文发送。在


Tags: 字符串代码envcmd示例参数address公司
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:47

抱歉,但我认为是您调用的过程没有正确地接受参数;这与C无关,并证明了这一点:

  • 创建新的windows窗体应用程序
  • 确保主签名如下所示:

    static void Main(string[] args)
    
  • 确保主窗体(名为Form1)的调用如下所示:

        if (args==null)
        {
            Application.Run(new Form1()); 
        }
        else
        {
            Application.Run(new Form1(args)); 
        }
    
  • 在表单中添加一个文本框,并将multiline属性设置为true

  • 在表单中添加按钮

  • 运行应用程序一次

  • 然后将此代码放入button1\u Click函数的代码中(替换ameofcurrentapp):

        string Command = "TheNameOfTheCurrentApp";                 
        string arguments = textBox1.Text;
        System.Diagnostics.ProcessStartInfo start = new System.Diagnostics.ProcessStartInfo(Command, arguments);
        start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
        start.CreateNoWindow = true;
        start.UseShellExecute = true;
        System.Diagnostics.Process process = System.Diagnostics.Process.Start(start);        
    
  • 将此构造函数添加到窗体:

    public Form1(string[] args)
    {
        InitializeComponent();
        textBox1.Text = string.Join(" ", args);
    }
    
  • 然后运行应用程序,在文本框中插入多行,然后单击按钮。相同的应用程序将出现,文本框中正确填充了换行符

相关问题 更多 >

    热门问题