经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 如何做呢? 
  方法:使用System.Diagnostics.Process.Start()。它的作用是调用外部的命令。 
  调用方法:

Process.Start ()
Process.Start (ProcessStartInfo)
Process.Start (String)
Process.Start (String, String)
Process.Start (String, String, SecureString, String)
Process.Start (String, String, String, SecureString, String)

  比如:

 System.Diagnostics.Process   ie   =   new   System.Diagnostics.Process();
ie.StartInfo.FileName = "IEXPLORE.EXE";
ie.StartInfo.Arguments = @"http://www.baidu.com ";
ie.Start();

  简洁的调用方式: System.Diagnostics.Process.Start(" http://www.baidu.com "); 
  当然,你还可以使用其他浏览器,如傲游而不是IE:

            string mathonPath = @"C:/Program   Files/Maxthon//Maxthon.exe";
System.Diagnostics.Process p = new System.Diagnostics.Process(); //设定程序名
p.StartInfo.FileName = mathonPath;
p.StartInfo.Arguments = @"c:/";
p.Start();

  如果你想用资源管理器打开C:/ ,那么可以这样做: 
  System.Diagnostics.Process.Start("explorer.exe", @"c:/"); 
  更有人可能会问:“我要打开“添加或删除程序”的面板或控制面板相关内容,可以吗?”答案是肯定的! 
  如何做?答案是调用rundll32.exe,比如: 
  打开“添加或删除程序”的面板: 
  System.Diagnostics.Process.Start("rundll32.exe", @"shell32.dll,Control_RunDLL appwiz.cpl,,1"); 
  其中后面的"shell32.dll,Control_RunDLL appwiz.cpl,,1"是调用命令所需的参数了。 
  这里说明一下,这类似于在Delphi中使用: 
  ShellExecute(Handle,'open','rundll32.exe','shell32.dll,Control_RunDLL   sysdm.cpl',nil,SW_SHOW);  
  WinExec('rundll32.exe   shell32.dll,Control_RunDLL   sysdm.cpl',SW_SHOW);

  关于rundll32.exe的用途  
  -------------------------------------------------------------------------------- 
  命令列:rundll32.exe user.exe,restartwindows  
  功能: 系统重启 
  命令列:rundll32.exe user.exe,exitwindows 
  功能: 关闭系统 
  命令列: rundll32.exe shell32.dll,Control_RunDLL  
  功能: 显示控制面板  
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1  
  功能: 显示“控制面板-辅助选项-键盘”选项视窗  
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2  
  功能: 显示“控制面板-辅助选项-声音”选项视窗

  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3  
  功能: 显示“控制面板-辅助选项-显示”选项视窗  
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4  
  功能: 显示“控制面板-辅助选项-滑鼠”选项视窗  
  命令列: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5  
  功能: 显示“控制面板-辅助选项-传统”选项视窗  
  命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1  
  功能: 执行“控制面板-添加新硬体”向导。

  命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter  
  功能: 执行“控制面板-添加新印表机”向导。

  命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1  
  功能: 显示 “控制面板-添加/删除程式-安装/卸载” 面板。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2  
  功能: 显示 “控制面板-添加/删除程式-安装Windows” 面板。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3  
  功能: 显示 “控制面板-添加/删除程式-启动盘” 面板。  
  命令列: rundll32.exe syncui.dll,Briefcase_Create  
  功能: 在桌面上建立一个新的“我的公文包”。  
  命令列: rundll32.exe diskcopy.dll,DiskCopyRunDll  
  功能: 显示复制软碟视窗

  命令列: rundll32.exe apwiz.cpl,NewLinkHere %1  
  功能: 显示“建立快捷方式”的对话框,所建立的快捷方式的位置由%1参数决定。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,0  
  功能: 显示“日期与时间”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL timedate.cpl,,1  
  功能: 显示“时区”选项视窗。  
  命令列: rundll32.exe rnaui.dll,RnaDial [某个拨号连接的名称]  
  功能: 显示某个拨号连接的拨号视窗。如果已经拨号连接,则显示目前的连接状态的视窗。  
  命令列: rundll32.exe rnaui.dll,RnaWizard  
  功能: 显示“新建拨号连接”向导的视窗。

  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0  
  功能: 显示“显示属性-背景”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1  
  功能: 显示“显示属性-萤屏保护”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2  
  功能: 显示“显示属性-外观”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3  
  功能: 显示显示“显示属性-属性”选项视窗。  
  命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL FontsFolder  
  功能: 显示Windows的“字体”档案夹。

  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3  
  功能: 同样是显示Windows的“字体”档案夹。

  命令列: rundll32.exe shell32.dll,SHFormatDrive  
  功能: 显示格式化软碟对话框。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,0  
  功能: 显示“控制面板-游戏控制器-一般”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL joy.cpl,,1  
  功能: 显示“控制面板-游戏控制器-进阶”选项视窗。  
  命令列: rundll32.exe mshtml.dll,PrintHTML (HTML文档)  
  功能: 列印HTML文档。

  命令列: rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl  
  功能: 显示Microsoft Exchange一般选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @0  
  功能: 显示“控制面板-滑鼠” 选项 。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1  
  功能: 显示 “控制面板-键盘属性-速度”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @1,,1  
  功能: 显示 “控制面板-键盘属性-语言”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @2  
  功能: 显示Windows“印表机”档案夹。

  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @3  
  功能: 显示Windows“字体”档案夹。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL main.cpl @4  
  功能: 显示“控制面板-输入法属性-输入法”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,,add  
  功能: 执行“添加新调制解调器”向导。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0  
  功能: 显示“控制面板-多媒体属性-音频”属性页。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1  
  功能: 显示“控制面板-多媒体属性-视频”属性页。

  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2 
  功能: 显示“控制面板-多媒体属性-MIDI”属性页。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3  
  功能: 显示“控制面板-多媒体属性-CD音乐”属性页。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4  
  功能: 显示“控制面板-多媒体属性-设备”属性页。

  命令列: rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1  
  功能: 显示“控制面板-声音”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl  
  功能: 显示“控制面板-网路”选项视窗。

  命令列: rundll32.exe shell32.dll,Control_RunDLL odbccp32.cpl  
  功能: 显示ODBC32资料管理选项视窗。  
  命令列: rundll32.exe shell32.dll,OpenAs_RunDLL {drive:/path/filename}  
  功能: 显示指定档案(drive:/path/filename)的“打开方式”对话框。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL password.cpl  
  功能: 显示“控制面板-密码”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL powercfg.cpl  
  功能: 显示“控制面板-电源管理属性”选项视窗。  
  命令列: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder  
  功能: 显示Windows“印表机”档案夹。(同rundll32.exe shell32.dll,Control_RunDLL main.cpl @2)

  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0  
  功能: 显示“控制面板-区域设置属性-区域设置”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1  
  功能: 显示“控制面板-区域设置属性-数字”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2  
  功能: 显示“控制面板-区域设置属性-货币”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3  
  功能: 显示“控制面板-区域设置属性-时间”选项视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4  
  功能: 显示“控制面板-区域设置属性-日期”选项视窗。

  命令列: rundll32.exe desk.cpl,InstallScreenSaver [萤屏保护档案名]  
  功能: 将指定的萤屏保护档案设置为Windows的屏保,并显示萤屏保护属性视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0  
  功能: 显示“控制面板-系统属性-传统”属性视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1  
  功能: 显示“控制面板-系统属性-设备管理器”属性视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2  
  功能: 显示“控制面板-系统属性-硬体配置档案”属性视窗。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3  
  功能: 显示“控制面板-系统属性-性能”属性视窗。

  命令列: rundll32.exe user.exe,restartwindows  
  功能: 强行关闭所有程式并重启机器。  
  命令列: rundll32.exe user.exe,exitwindows  
  功能: 强行关闭所有程式并关机。  
  命令列: rundll32.exe shell32.dll,Control_RunDLL telephon.cpl  
  功能: 显示“拨号属性”选项视窗  
  命令列: rundll32.exe shell32.dll,Control_RunDLL themes.cpl  
  功能: 显示“桌面主旨”选项面板 
 
  c#监控程序,是指用本程序,去监控本机上运行的另一个EXE程序,如果这个EXE发生异常而关闭,则本程序会自动重启异常程序。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;//引入Process 类
namespace WhbServerTask
{
public partial class Form1 : Form
{
private string ExeName = "DOS_XXT";
private string ExePath = @"E:\DOS_XXT.exe";
private bool RunFlag = false;
private Process[] MyProcesses;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
whbtask();
} private void whbtask()
{
listBox1.Items.Add(DateTime.Now.ToString() + ": " + " 程序轮询,运行正常!");
MyProcesses = Process.GetProcesses();
foreach (Process MyProcess in MyProcesses)
{
//查找是否正在运行
if (MyProcess.ProcessName.CompareTo(ExeName) == 0)
{
RunFlag = true;
}
}
if (!RunFlag)//如果没有运行就启动
{
System.Diagnostics.Process.Start(ExePath);
listBox1.Items.Add(DateTime.Now.ToString() + ": " + ExePath+" 程序重新启动一次!"); }
RunFlag = false; }
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add("说明:本程序为" + ExePath + "的运行监控程序,每1小时轮询一次,如果" + ExePath + "异
常关闭,则自动重启该程序!");
}
}
}

  调用Word打开文档用的是System.Diagnostics.Process类,相关代码如下:

string tempPath = System.Environment.GetEnvironmentVariable("TEMP");
string fileName = Path.Combine ( tempPath, "01.doc"); Process wordProcess = new Process();
wordProcess.StartInfo.FileName = fileName;
wordProcess.StartInfo.Verb = "edit";
wordProcess.StartInfo.UseShellExecute = true;
wordProcess.Start();
wordProcess.WaitForExit();
wordProcess.Close(); MessageBox.Show ( "Word Exited!" );

  在执行到  wordProcess.WaitForExit(); 这一句时发生意外,信息是“没有与此对象关联的进程”。仔细查看MSDN里的相关文档,也没有太详细的解释,只是在WaitForExit()方法的文档 提到可能出现的意外中就包含了这个。突然想到有没有可能是因为Word进程已经打开,所以并不是和当前进程所关联的,所以会出现这个意外。关掉运行的其他 Word进程以后,再执行果然就没有问题了。 
  经过一番研究,终于找到了有没有Word实例运行的情况下都能实现上一篇文章中的要求的方法,代码如下:

string  tempPath = System.Environment.GetEnvironmentVariable("TEMP");
string fileName = Path.Combine ( tempPath, "推理01.doc");
string winwordPath = ""; // 判断系统中是否已经有 Word 实例在运行。
Process[] wordProcesses = Process.GetProcessesByName("winword");
foreach ( Process process in wordProcesses)
{
Debug.WriteLine( process.MainWindowTitle );
winwordPath = process.MainModule.FileName; // 如果有的话获得 Winword.exe 的完全限定名称。
break;
} Process wordProcess = new Process(); if ( winwordPath.Length > 0 ) // 如果有 Word 实例在运行,使用 /w 参数来强制启动新实例,并将文件名作为参数传递。
{
     wordProcess.StartInfo.FileName = winwordPath;
wordProcess.StartInfo.UseShellExecute = false;
wordProcess.StartInfo.Arguments = fileName + " /w";
}
else // 如果没有 Word 实例在运行,还是
{
wordProcess.StartInfo.FileName = fileName;
wordProcess.StartInfo.UseShellExecute = true;
} wordProcess.Start();
wordProcess.WaitForExit(); // 当前进程一直在等待,直到该 Word 实例退出。
wordProcess.Close(); 调用带参数的启动函数,参数间用空格即:
Process.Start("程序名","a b c d e")
接收进程程序的main函数:
Static void Main(String[] args)
{
  //传进自变String[] 类型
  // args[0] == "a";
  // args[1]== "b";
} 文章转载于https://www.cnblogs.com/xinaixia/p/5520190.html

(转)C# System.Diagnostics.Process.Start使用的更多相关文章

  1. System.Diagnostics.Process.Start的妙用

    我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案 ...

  2. System.Diagnostics.Process 启动进程资源或调用外部的命令的使用

    经常看到一些程序在保存为一个txt,或者excel的文件的时候,保存完毕立即打开, 启动程序或打开文件的代码 System.Diagnostics.Process.Start(System.IO.Pa ...

  3. System.Diagnostics.Process.Star的用法

    System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如“控制 ...

  4. WPF中System.Diagnostics.Process.Start的妙用

    我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案 ...

  5. C# 之 System.Diagnostics.Process.Start的妙用

    经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 如何做呢? 方法:使用S ...

  6. C#——System.Diagnostics.Process.Start的妙用

    我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 那么如何做呢? 答案 ...

  7. How to use System.Diagnostics.Process correctly

    I’ve seen many a question on stackoverflow and other places about running a process and capturing it ...

  8. System.Diagnostics.Process 执行.EXE

    分类:  C#+WINFORM 2009-04-05 21:09 459人阅读 评论(0)  收藏  举报  我们经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打 ...

  9. System.Diagnostics.Process 测试案例

    1.System.Diagnostics.Process 执行exe文件 创建项目,编译成功后,然后把要运行的exe文件拷贝到该项目的运行工作目录下即可,代码如下: using System; usi ...

随机推荐

  1. 使用Jenkins构建、部署spring boot项目

    一.环境搭建 本次实验的环境为Ubuntu 16.04,Jenkins 2.8.3 1.安装ssh sudo apt-get update # 更新软件源 sudo apt-get install o ...

  2. Zabbix poller processes more than 75% busy

    Centos7.5  在设置网络监控的时候zabbix提示Zabbix poller processes more than 75% busy 问题 原因 默认只开启一个Discoverers进程,就 ...

  3. VS2015密钥

    Visual Studio Professional 2015简体中文版(专业版)KEY:HMGNV-WCYXV-X7G9W-YCX63-B98R2Visual Studio Enterprise 2 ...

  4. Python3 tkinter基础 Listbox height 显示行数的上限

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  5. Python logging 模块学习

    logging example Level When it's used Numeric value DEBUG Detailed information, typically of interest ...

  6. javascript的执行过程, 语法错误和运行时错误?

    js的执行错误分为 语法syntaxError,和 runtime error, 首先, js引擎会检查 整个脚本的语法, 如果在检查语法的过程中,发现了错误, 比如括哈不配对, 字符串少了 另一半的 ...

  7. jvm:垃圾收集器

    垃圾收集器: Serial 收集器: 单线程收集器,专注做收集,会暂停别的工作.收集效果好. ParNew 收集器: 是Serial的多线程版本.目前只有它能和CMS收集器配合.    Paralle ...

  8. mvc扩展HtmlHelper功能

    HtmlHelper详细介绍 简单示例 自定义HtmlHelper 解决: 直接写HTML的话如果语句有语法错误,如缺少结尾标记</b>,编译器不会报错,出来的页面可能会很乱且难以查出错误 ...

  9. 教你用ActiveReports分析京东双十一数据的价值

    随着双十一购物盛会落下帷幕,各大电商平台纷纷公布出自己今年的成绩.与其它同行不同的是,京东除了公布1598亿的线上下单金额,还公布了线上线下融合的战果. 面对京东线上.线下海量数据源,我们该如何进行整 ...

  10. 测试与CMMI质量体系

    1. CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型) 其目的是帮助软件企业对软件工程过程进行管理和改 ...