简单介绍C#使用Process调用外部程序中所遇到的参数问题的代码示例

这篇文章主要介绍了c# 使用process调用外部程序中所遇到的参数问题,需要的朋友可以参考下

在使用Process.Start 调用外部程序时,除了程序的地址之外,是可以传递参数的,Process.Start 也有多个重载;

//    // 摘要:    //   启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的 System.Diagnostics.Process    //   组件关联。    //    // 参数:    //  startInfo:    //   System.Diagnostics.ProcessStartInfo,包含用于启动进程的信息(包括文件名和任何命令行参数)。    //    // 返回结果:    //   与进程资源关联的新的 System.Diagnostics.Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 null。    //    // 异常:    //  System.InvalidOperationException:    //   在 startInfo 参数的 System.Diagnostics.ProcessStartInfo.FileName 属性中未指定任何文件名。-    //   或 - startInfo 参数的 System.Diagnostics.ProcessStartInfo.UseShellExecute 属性为    //   true,而 System.Diagnostics.ProcessStartInfo.RedirectStandardInput、System.Diagnostics.ProcessStartInfo.RedirectStandardOutput    //   或 System.Diagnostics.ProcessStartInfo.RedirectStandardError 属性也为 true。- 或    //   -startInfo 参数的 System.Diagnostics.ProcessStartInfo.UseShellExecute 属性为 true,而    //   System.Diagnostics.ProcessStartInfo.UserName 属性不为 null 或空,或者 System.Diagnostics.ProcessStartInfo.Password    //   属性不为 null。    //    //  System.ArgumentNullException:    //   startInfo 参数为 null。    //    //  System.ComponentModel.Win32Exception:    //   打开关联的文件时发生了错误。    //    //  System.ObjectDisposedException:    //   该进程对象已被释放。    public static Process Start(ProcessStartInfo startInfo);    //    // 摘要:    //   通过指定文档或应用程序文件的名称来启动进程资源,并将资源与新的 System.Diagnostics.Process 组件关联。    //    // 参数:    //  fileName:    //   要在进程中运行的文档或应用程序文件的名称。    //    // 返回结果:    //   与进程资源关联的新的 System.Diagnostics.Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 null。    //    // 异常:    //  System.ComponentModel.Win32Exception:    //   打开关联的文件时发生了错误。    //    //  System.ObjectDisposedException:    //   该进程对象已被释放。    //    //  System.IO.FileNotFoundException:    //   PATH 环境变量有包含引号的字符串。    public static Process Start(string fileName);    //    // 摘要:    //   通过指定应用程序的名称和一组命令行参数来启动一个进程资源,并将该资源与新的 System.Diagnostics.Process 组件相关联。    //    // 参数:    //  fileName:    //   要在该进程中运行的应用程序文件的名称。    //    //  arguments:    //   启动该进程时传递的命令行参数。    //    // 返回结果:    //   与该进程关联的新的 System.Diagnostics.Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 null。    //    // 异常:    //  System.InvalidOperationException:    //   fileName 或 arguments 参数为 null。    //    //  System.ComponentModel.Win32Exception:    //   打开关联的文件时发生了错误。    //    //  System.ObjectDisposedException:    //   该进程对象已被释放。    //    //  System.IO.FileNotFoundException:    //   PATH 环境变量有包含引号的字符串。    public static Process Start(string fileName, string arguments);    //    // 摘要:    //   通过指定应用程序的名称、用户名、密码和域来启动一个进程资源,并将该资源与新的 System.Diagnostics.Process 组件关联起来。    //    // 参数:    //  fileName:    //   要在该进程中运行的应用程序文件的名称。    //    //  userName:    //   启动进程时使用的用户名。    //    //  password:    //   一个 System.Security.SecureString,它包含启动进程时要使用的密码。    //    //  domain:    //   启动进程时要使用的域。    //    // 返回结果:    //   与进程资源关联的新的 System.Diagnostics.Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 null。    //    // 异常:    //  System.InvalidOperationException:    //   未指定文件名。    //    //  System.ComponentModel.Win32Exception:    //   fileName 不是可执行 (.exe) 文件。    //    //  System.ComponentModel.Win32Exception:    //   打开关联的文件时发生了错误。    //    //  System.ObjectDisposedException:    //   该进程对象已被释放。    public static Process Start(string fileName, string userName, SecureString password, string domain);    //    // 摘要:    //   通过指定应用程序的名称、一组命令行参数、用户名、密码和域来启动一个进程资源,并将该资源与新的 System.Diagnostics.Process    //   组件关联起来。    //    // 参数:    //  fileName:    //   要在该进程中运行的应用程序文件的名称。    //    //  arguments:    //   启动该进程时传递的命令行参数。    //    //  userName:    //   启动进程时要使用的用户名。    //    //  password:    //   一个 System.Security.SecureString,它包含启动进程时要使用的密码。    //    //  domain:    //   启动进程时要使用的域。    //    // 返回结果:    //   与进程资源关联的新的 System.Diagnostics.Process 组件,或者如果没有启动进程资源(例如,如果重用了现有进程),则为 null。    //    // 异常:    //  System.InvalidOperationException:    //   未指定文件名。    //    //  System.ComponentModel.Win32Exception:    //   fileName 不是可执行 (.exe) 文件。    //    //  System.ComponentModel.Win32Exception:    //   打开关联的文件时发生了错误。    //    //  System.ObjectDisposedException:    //   该进程对象已被释放。    public static Process Start(string fileName, string arguments, string userName, SecureString password, string domain);

登录后复制

其中的arguments 参数, 是有个空格的问题的, 在外部程序接收参数的 (Winform) 是用过Main(string[] args) 。 其中args是数组 , 在StartInfo.Arguments中的参数的间隔是根据空格进行分断的。 所以如果在传递的参数中是空格的,就需要 在  参数前后追加 “””  即:

string argument1 = """ + argv1 + """;   string argument2 = """ + argv2 + """;   Process process = new Process();   process.StartInfo.FileName = System.Environment.CurrentDirectory + "//test.exe";   process.StartInfo.Arguments = argument1 + " " + argument2;   process.StartInfo.UseShellExecute = true; ;   //启动   process.Start();

登录后复制

ok, 这样就能解决Process 传递参数的有空格的问题了。

以上就是简单介绍C#使用Process调用外部程序中所遇到的参数问题的代码示例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2495589.html

(0)
上一篇 2025年3月5日 02:19:59
下一篇 2025年2月23日 23:06:35

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C#基础入门-变量介绍

    本文主要介绍了c#中变量的基础知识,具有很好的参考价值。下面跟着小编一起来看下吧 使用变量分为3步:声明、赋值、使用。 声明变量的语法:数据类型 变量名; 给变量赋值的语法:变量名=值; namespace Test{ class Prog…

    2025年3月5日
    200
  • C#基础入门之算法-交换的代码示例

    本文主要介绍了c#中算法:交换的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧 交换2个变量的值,就如同交换两只杯子中的饮料:一杯满满的牛奶和一杯满满的咖啡,怎样才能互换呢? 变量的交换也如此。两个变量的交换也需要一只“空杯子”,就…

    2025年3月5日
    200
  • C#基础入门-常量详解

    本文主要介绍了c#中常量的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧 常量,顾名思义,就是“不会改变的量”。 我们平时书写的数字(比如12.85)、字符(比如’F’)、字符串(比如”谢谢&#8…

    2025年3月5日
    200
  • C#开发step步骤条控件的代码详解(图)

    本篇文章主要介绍了用c#来实现一个step控件的方法步骤,具有很好的参考价值。下面跟着小编一起来看下吧 现在很多的javascript控件,非常的不错,其中step就是一个,如下图所示: 那么如何用C#来实现一个step控件呢? 先定义一个…

    2025年3月5日
    200
  • C#基础入门-关键字的介绍

    本文主要介绍了c# 基础知识–关键字的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧 例子: using System;using System.Collections.Generic;using System.Text…

    编程技术 2025年3月5日
    200
  • C#基础入门-简单了解注释

    本文主要介绍了c#中注释的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧 注释,是代码中的一些“说明性文字”。注释本身不会参与程序的编译和运行,仅仅供程序员阅读。 注释分为:单行注释、多行注释、文档注释。 单行注释的符号是2条斜线“…

    编程技术 2025年3月5日
    200
  • 详细介绍C#中new的几种用法

    本文主要介绍了c#中new的几种用法,具有很好的参考价值,下面跟着小编一起来看下吧 在 C# 中,new 关键字可用作运算符、修饰符或约束。 new 运算符 用于创建对象和调用构造函数。 new 修饰符 用于向基类成员隐藏继承成员。 new…

    编程技术 2025年3月5日
    200
  • C#生成漂亮验证码的完整示例代码分享

    本文主要介绍了c#生成漂亮验证码的完整代码类。具有很好的参考价值。下面跟着小编一起来看下吧 话不多说,请看代码: using System;using System.Web;using System.Drawing;using System…

    编程技术 2025年3月5日
    200
  • 详解C#获取本机IP地址(ipv4)的代码案例

    本文主要介绍了c#获取本机所有ip地址的方法、c#获取本机ip地址(ipv4)的方法等。具有很好的参考价值。下面跟着小编一起来看下吧 获取本机所有IP地址: 这些地址是包含所有网卡(虚拟网卡)的ipv4和ipv6地址。  string na…

    编程技术 2025年3月5日
    200
  • C#构建分页应用的实例方法分析

    这篇文章主要介绍了c#构建分页应用的方法,结合实例形式分析了c#创建分页功能的具体步骤与相关实现技巧,需要的朋友可以参考下 本文实例讲述了C#构建分页应用的方法。分享给大家供大家参考,具体如下: 1、SQL语句 WITH [temptabl…

    编程技术 2025年3月5日
    200

发表回复

登录后才能评论