gpt4 book ai didi

带换行符的 C# 命令行参数在 C# 中失败,但在 python 中则不然。需要使 c# 工作

转载 作者:太空狗 更新时间:2023-10-30 01:30:14 26 4
gpt4 key购买 nike

环境:.NET 3.5 Visual Studio 2008 SP1,Win XP SP3,Python 2.7。企业形象,无管理员权限。

在C# 3.5中,我想传递一个参数给命令行程序,这个参数包含换行符。它适用于 Python 2.7,但不适用于 C#。

当正文包含换行符时,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()

C#代码:

string Command = "<path to executable>";                 
string arguments = " email -From " + FromAddress + " -To " + ToAddress + " -Subject \"" + SubjectLine + "\" -Body \"" + emailBody + "\" ";
System.Diagnostics.ProcessStartInfo start = new System.Diagnostics.ProcessStartInfo(Command, arguments);
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
start.CreateNoWindow = false;
start.UseShellExecute = true;
System.Diagnostics.Process process = System.Diagnostics.Process.Start(start);

有什么想法吗?

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

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

此外,如您所知,调用的应用将正文 (emailBody) 参数内容作为电子邮件正文发送。

最佳答案

抱歉,但我认为是您调用的过程没有正确接受参数;它不涉及 C#,作为证明:

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

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

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

  • 向表单添加按钮

  • 运行一次应用

  • 然后将其放入 button1_Click 函数的代码中(替换 TheNameOfTheCurrentApp):

        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);
    }
  • 然后运行您的应用,在您的文本框中插入多行并单击按钮。相同的应用程序将出现,文本框正确填充了换行符

关于带换行符的 C# 命令行参数在 C# 中失败,但在 python 中则不然。需要使 c# 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com