`
wang_peng1
  • 浏览: 3900194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c# 路径空格---ProcessStartInfo参数问题

阅读更多
今天在整合程序的时候,要从一个程序转到另一个程序 当然要使用:
  ProcessStartInfo startInfo = new ProcessStartInfo("\\Program Files\\IE\\IE.exe", s);
                     Process.Start(startInfo);
不过对于wm来说 不支持Process.Start(string)形式 真汗。

这里的s 是指:
string fullname = treeView1.SelectedNode.FullPath;
//  string s = "\"" + @fullName + "\"";  
                     string s =  @fullName ;
开始我还傻了吧唧的 吧@\"+ fuluuname 如此使用 结果错误的,@直接跟路径名就好。系统自动辨认。

传递好参数之后,那么怎么使用这个参数呢 :
在被启动程序中
  [MTAThread]
        static void Main(string[] args)
        {
       
            if(string.IsNullOrEmpty(string.Join(" ", args)))
            { Application.Run(new Form1()); }
            else
            {

                Application.Run(new Form1(string.Join(" ", args)));
            }
        }
这里一定要注意 “ ”之间我是按了一个空格的,args会自动根据空格分成数组如
D:\My Documents 他会分成 arg[0]=D:\My  arg[1]=Documents
就因为这个问题我高了一下午,开始还以为自己重写的ie有问题,加上调式wm不是很方便真的郁闷的要死。 空格没有转义字符   只有空字符null有转义字符\0,有时候真的搞不懂网络上那些标题命名为 空格转义字符的人   竟然不具体标明 ,乱转。
在网络中还搜索到了一片
http://www.cnblogs.com/tuyile006/archive/2006/05/09/395193.html
写的不错 不过没有调试 其内容如下:
这几天做一个通讯程序,要通过“运行”开启一个进程
结果有时候可以正常调用,有时候就出现问题
出问题代码如下:

   Process p=Process.Start(t_path.Text.ToString(),t_file.Text.ToString());
        Process.start()第一个参数是运行的程序名称,后面是该程序参数

如果这两个路径中不含空格的时候就可以正常运行,
如果包含像"D:\Program Files\"或者"G:\Documents and Settings"之类的路径程序就会出问题
原因是在运行行里面 如果运行的程序只接收一个参数,参数里面夹一个空格就相当于回车
也就是说,如果运行输入:c:\aa.exe  d:\Program Files\tt.txt
其实运行的是:c:\aa.exe  d:\Program
这样肯定会出错了

正确的写法应该是:
Process p=Process.Start("\""+t_path.Text.ToString()+"\"","\""+t_file.Text.ToString()+"\"");

这种写法绝对保险。

调用的时候采用if (args.Length<=0)
            { Application.Run(new Form1()); }
            else
            {

                Application.Run(new Form1(args[0]));
            }
在从一个程序 引用另一个程序后 有时候 在单独启动第二个程序就会出现
部署和/或注册失败,错误为: 0x8973190e。 写入文件“%CSIDL_PROGRAM_FILES%\*\*.exe”时出错。错误 0x80070020: 另一个程序正在使用此文件,进程无法访问
的错误 这时候应该
其实这个东东的路径是在我的文档下的\*\*.exe路径下,根本没有任何程序在使用这个文件
在mobile上选择文件--清除保存的状态,然后把mobile退出一下就好了
就是模拟上的file 当然我的是英文版的 然后选择里面的clear的一个类似选项就可以了
你也可以参看
http://www.wmisv.com.cn/bbs/dispbbs.asp?boardID=2&ID=5065
分享到:
评论

相关推荐

    C#存储过程的调用示例源码

    功能介绍: 详细介绍了如何使用C#调用各种类型的存储过程 1.输入参数存储过程调用 2.输出参数存储过程的调用 3.如何使用参数数组

    用c#实现启动操作系统上的程序或进程,并指定参数和谓词。

    用c#实现启动操作系统上的程序或进程,用Process类实现;并指定参数和谓词,用ProcessStartInfo和Verbs实现。

    VB.NET 获取进程命令参数修改版

    含有源码,原作者zcsor 原作者的源码是VS2005的,我修改成VS2003的了 增加了双击选中列表项复制进程路径和参数到剪贴板的功能

    2个C#开启服务的方法!一个用ServiceController实现一个用运行实现

    2个C#开启服务的方法! 一个用ServiceController实现 一个用CMD运行+ProcessStartInfo实现 一个按钮实现开启和关闭服务两个功能!!!

    通过C#调用外部程序(源码示例)

    System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo(); //设置外部程序名 Info.FileName = "notepad.exe"; //设置外部程序的启动参数(命令行参数)为test.txt Info.Arguments ...

    浅析C# 使用Process调用外部程序中所遇到的参数问题

    在使用Process.Start 调用外部程序时,除了程序的地址之外,是可以传递参数的,Process.Start 也有多个... // System.Diagnostics.ProcessStartInfo,包含用于启动进程的信息(包括文件名和任何命令行参数)。 // /

    DemoRAR.rar

    2. 创建Process类操作WinRAR应用程序:配置好ProcessStartInfo参数(在ProcessStartInfo参数中可以对Arguments 的赋值,传入RAR命令符) 3. RAR命令符说明:随意打开WinRAR后可以查看相应的命令符说明

    开机自动启动(C#)

    一个开机自动启动的主要代码,通过修改注册表.很不错的

    RAW格式转BMP、JPEG等格式程序

    ProcessStartInfo startInfo = new ProcessStartInfo("dcraw.exe", "-T D:\\sample.CR2"); startInfo.CreateNoWindow = true; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.UseShellExecute = ...

    C# 使用相同权限调用 cmd 传入命令的方法

    本文告诉大家如何使用相同权限调用cmd并且传入命令。 如果想要用相同的权限运行一个程序,可以使用 ProcessStartInfo 的方法  var processStartInfo = new ...所以需要修改一下在 C# 调用 ProcessStartInfo

    C#调用dos窗口获取相关信息的方法

    本文实例讲述了C#调用dos窗口获取相关信息的方法。分享给大家供大家参考。具体实现方法如下: /// /// 调用dos窗口获取相关信息 /// /// 如:netstat-ano或者ipconfig /// &lt;returns&gt;&lt;/returns&gt; static string Get...

    c#使用process.start启动程序报错解决方法

    出错信息: 代码如下:Unknown error (0xffffffff)at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)at System.Diagnostics.Process.Start()at System.Diagnostics.Process.Start...

    ffmpeg 转换flv

    //设置进程启动信息属性StartInfo,这是ProcessStartInfo类,包括了一些属性和方法: p.StartInfo.FileName = Server.MapPath("ffmpeg/ffmpeg.exe"); //程序名 p.StartInfo.Arguments = " -i " + strCmd; //执行参数...

    C#实现打开画图的同时载入图片、最大化显示画图窗体的方法

    本文实例讲述了C#实现打开画图的同时载入图片、最大化显示画图窗体的方法。分享给大家供大家参考。具体实现方法如下: /// /// 打开画图的同时载入图片 /// 最大化显示画图窗体 /// public static void ...

    创建进程时,指定父进程

    在创建一个进程时指定其父进程。

    C#使用dir命令实现文件搜索功能示例

    本文实例讲述了C#使用dir命令实现文件搜索功能。分享给大家供大家参考,具体如下: 以往,我都是使用 System.IO.Directory.GetDirectories() 和 System.IO.Directory.GetFiles() 方法遍历目录搜索文件。但实际的执行...

    文件夹加密

    MessageBox.Show ("孤竹残梦提醒:不建议伪装系统文件夹下文件,可能会造成系统出问题","提示信 息",MessageBoxButtons.OK,MessageBoxIcon.Error); } else { AfoldePath.Text =foldeOpen.SelectedPath; } } catch { ...

    C# 动态输出Dos命令执行结果的实例(附源码)

    在C#程序开发过程中,有时需要运行其它的程序并获得输出的结果来进行进一步的处理。一般第三方的程序,主要通过进程来调用,如果能够获取第三方程序执行过程中的信息,就显得方便而有用。 涉及知识点: 进程相关类...

    flvmdi,flv修复工具,针对ffgpeg+mencoder转化后的问题

    System.Diagnostics.ProcessStartInfo flvmdiInfo = new System.Diagnostics.ProcessStartInfo(flvmdi); flvmdiInfo.WindowStyle = ProcessWindowStyle.Normal; flvmdiInfo.Arguments = flv_file; System....

    .NET Core跨平台执行命令、脚本的方法详细

    一.前言 在工作中我们可能会遇到需要在程序中执行一些系统命令,来获取一些信息;...ProcessStartInfo主要设置一些我们需要创建的进程的参数。比如需要启动的应用程序的文件名,参数等等。 (1)构造方法 它

Global site tag (gtag.js) - Google Analytics