C#中关于System.Diagnostics.Process的应用

王朝c#·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

bat文件控制参数的方法:

将你的net use \172.16.17.1 /user:username password写到bat文件中,然后运行下面代码就可以了。

System.Diagnostics.Process process = new System.Diagnostics.Process();

process.StartInfo.CreateNoWindow = false;

process.StartInfo.FileName = "d:\\netuse.bat";

process.Start();

程序控制参数方法:

lovevsnet(编程一把手)提到:

System.Diagnostics.ProcessStartInfo psi =

new System.Diagnostics.ProcessStartInfo();

//prompt

psi.FileName = @"C:\WINDOWS\system32\cmd.exe"; // Path for the cmd prompt

psi.Arguments =@"net use \172.16.17.1 /user:username password";

psi.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;

System.Diagnostics.Process.Start(psi);

就是用进程启动cmd.exe

使用Process类运行ShellExecute的一个问题(点击查看引用)

只有在STA线程上ShellExecute 才能确保工作无误。在Process的实现中,并没有考虑到这个问题,所以使用Process类运行ShellExecute可能会出错。如果你不能保证调用Process.Start的线程的ApartmentState,可以使用如下的代码来避免这个问题:

using System;

using System.Threading;

public class Foo {

public static void OpenUrl() {

System.Diagnostics.Process.Start(@"http://www.google.com");

}

public static void Main() {

ThreadStart openUrlDelegate = new ThreadStart(Foo.OpenUrl);

Thread myThread = new Thread(openUrlDelegate);

myThread.SetApartmentState(ApartmentState.STA);

myThread.Start();

myThread.Join();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航