工作中常常遇到这样的问题,一些被封装好的工具已经实现了我们某个步骤所需的功能,在不影响整体使用效果情况下,我们可以通过调用外部程序并执行相关操作来达成程序的目的。这里分享一个可以调用外部程序的方法,即using System.Diagnostics,C#中提供了这个命名空间下的Process类来实现调用其他程序的方法,了解cmd指令的朋友都清楚,作为Windows的Shell语言,cmd指令算是可以完成绝大多数的系统操作了,通过它来打开某个程序是我们的实现思路。
// 调用CMD指令
public void CMD(string command)
{
//定义好cmd进程
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";//打开cmd
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;//是否允许输入
p.StartInfo.RedirectStandardOutput = true;//是否允许输出
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;//是否显示cmd窗口,true为不显示
p.Start();
p.StandardInput.WriteLine(command);
p.StandardInput.WriteLine("exit");//最后输入exit退出cmd
p.StandardInput.AutoFlush = true;
string result = p.StandardOutput.ReadToEnd();//获取执行结果
p.WaitForExit();
p.Close();
Console.WriteLine(result);
//return result;
}
当然,通过cmd再来打开某个程序是不是显得多此一举呢,所以这个方法我写出来只是作为通用性的方法,cmd指令中有很多有意思的内容,比如远程映射,获取底层硬件配置等等,在参数command中传入相应的指令即可,大家可以自己多尝试。而直接打开一个程序的话我们可以这样简写:
//调用外部程序
private void openExternalProgram(string exeName)
{
var p = new System.Diagnostics.Process();
p.StartInfo.FileName = exeName;
p.Start();
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
}
打开程序之后我们再结合获取句柄及模拟键盘输入等一系列操作,“投机取巧”的获取我们想要的结果,后续我会继续更新相关的知识~对大家有帮助的话还希望点赞给个鼓励呢!