博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 路径空格---ProcessStartInfo参数问题
阅读量:5127 次
发布时间:2019-06-13

本文共 1868 字,大约阅读时间需要 6 分钟。

今天在的时候,要从一个程序转到另一个程序 当然要使用: 

  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

转载于:https://www.cnblogs.com/gc2013/p/3843093.html

你可能感兴趣的文章
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>
Android 画图之 Matrix(一)
查看>>