C# 将信息从Cmd Promt窗口复制到控制台应用程序中
编程新手,但我想知道我想做的事情是否可能!如果是这样,怎么办 我开发了一个控制台应用程序,可以获取计算机的IP地址。然后程序打开cmd提示符并运行nslookup(使用所述IP地址)以获取有关计算机的一些信息 当程序结束时,我打开了两个控制台窗口;cmd promt控制台和程序控制台。cmd提示符1包含了我需要的信息。我不知道如何从cmd控制台复制/获取信息,并将其放入字符串/数组中,以便使用这些信息 我搜索过谷歌,但我一直得到的是从cmd提示窗口手动复制的方法!不是如何从cmd提示符窗口返回信息,而是从程序中打开的窗口 另外,请不要建议进行反向DNS查找或使用environment.machinename而不是使用cmd提示符。我尝试过许多方法,这是我能够获得所需正确信息的唯一途径C# 将信息从Cmd Promt窗口复制到控制台应用程序中,c#,cmd,nslookup,C#,Cmd,Nslookup,编程新手,但我想知道我想做的事情是否可能!如果是这样,怎么办 我开发了一个控制台应用程序,可以获取计算机的IP地址。然后程序打开cmd提示符并运行nslookup(使用所述IP地址)以获取有关计算机的一些信息 当程序结束时,我打开了两个控制台窗口;cmd promt控制台和程序控制台。cmd提示符1包含了我需要的信息。我不知道如何从cmd控制台复制/获取信息,并将其放入字符串/数组中,以便使用这些信息 我搜索过谷歌,但我一直得到的是从cmd提示窗口手动复制的方法!不是如何从cmd提示符窗口返回信
using System;
using System.Net;
using System.Net.Sockets;
namespace ProcessService
{
static class Program
{
static void Main()
{
//The IP or Host Entry to lookup
IPHostEntry host;
//The IP Address String
string localIP = "";
//DNS lookup
host = Dns.GetHostEntry(Dns.GetHostName());
//Computer could have several IP addresses,iterate the collection of them to find the proper one
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
localIP = ip.ToString();
}
}
//Converts an IP address string to an IPAddress instance.
IPAddress address = IPAddress.Parse(localIP);
string strCmdText;
strCmdText = "/k nslookup " + localIP;
//open cmd prompt and run the command nslookup for a given IP
System.Diagnostics.Process.Start("C:/Windows/System32/cmd.exe", strCmdText);
//output result
Console.WriteLine(strCmdText);
//Wait for user to press a button to close window
Console.WriteLine("Press any key...");
Console.ReadLine();
}
}
}
您正在启动一个外部流程,这很好。您现在需要做的是重定向标准输出。您只需要将信息反馈到程序中,而不是从cmd提示符窗口复制信息。您需要进行一些分析,但以下是来自microsoft的示例:
// Start the child process.
Process p = new Process();
// Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "Write500Lines.exe";
p.Start();
// Do not wait for the child process to exit before
// reading to the end of its redirected stream.
// p.WaitForExit();
// Read the output stream first and then wait.
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
资料来源: