请高手来帮忙解决!
C#代码EXE服务执行程序(ConsoleApp.exe)样例代码的如下:
static void Main(string[] args)
{
string procName = System.Diagnostics.Process.GetCurrentProcess().ProcessName;
File.AppendAllText("D:\\systemtool.txt", procName + "\n");
if ((System.Diagnostics.Process.GetProcessesByName(procName)).GetUpperBound(0) == 0)
{
File.AppendAllText("D:\\systemtool.txt", "Bussiness handle" + "\n");
//接收传过来的XML格式字符串参数
string paramXML = "";
if (!string.IsNullOrEmpty(args[0]))
{
paramXML = args[0];
File.AppendAllText("D:\\systemtool.txt", "Input XML parameters:" + paramXML + "\n");
XmlDocument oXmlDoc = new XmlDocument();
try
{
oXmlDoc.LoadXml(paramXML);
XmlNode root = oXmlDoc.DocumentElement;
XmlNodeList nodes = root.ChildNodes;
foreach (XmlNode node in nodes)
{
File.AppendAllText("D:\\systemtool.txt", node.Name + "->" + node.InnerText + "\n\n");
}
//调用其他业务窗体代码
.................
}
catch (Exception error)
{
File.AppendAllText("D:\\systemtool.txt", "Exception error->" + error.Message + "\n");
throw new Exception(error.Message);
}
finally
{
oXmlDoc = null;
}
}
//返回值
string returnParam = "<Root><RetValue>1</RetValue></Root>";
Console.Write(returnParam);//将返回值写入到标准的控制台输出。
}
C#调用EXE执行程序样例,如下:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
//外部Console服务程序物理路径
p.StartInfo.FileName = @"F:\ConsoleApp.exe";
p.StartInfo.CreateNoWindow = true;
//启动参数
p.StartInfo.Arguments = "<Root><Inparam>0</Inparam></Root>";
p.Start();
p.WaitForExit();
//返回值
string returnValue = p.StandardOutput.ReadToEnd();
6 个解决方案
#1
请高手帮忙编写测试通过的源码贴上,非常感谢,着急用!
#2
为啥发2遍?请参考:http://blog.csdn.net/nocry115/article/details/52851722
#3
感谢参考提供,但我需要的是调用EXE,而不是dll。
#4
写文本文件,我也发2次
#5
不能用数据库和文本
#6
把输出重定向到一个文件里,试试以下代码
run("f:\consoleapp.exe '<Root><Inparam>0</Inparam></Root>' >> c:\111.txt")
然后再pb里打开c:\111.txt进行处理
run("f:\consoleapp.exe '<Root><Inparam>0</Inparam></Root>' >> c:\111.txt")
然后再pb里打开c:\111.txt进行处理
#1
请高手帮忙编写测试通过的源码贴上,非常感谢,着急用!
#2
为啥发2遍?请参考:http://blog.csdn.net/nocry115/article/details/52851722
#3
感谢参考提供,但我需要的是调用EXE,而不是dll。
#4
写文本文件,我也发2次
#5
不能用数据库和文本
#6
把输出重定向到一个文件里,试试以下代码
run("f:\consoleapp.exe '<Root><Inparam>0</Inparam></Root>' >> c:\111.txt")
然后再pb里打开c:\111.txt进行处理
run("f:\consoleapp.exe '<Root><Inparam>0</Inparam></Root>' >> c:\111.txt")
然后再pb里打开c:\111.txt进行处理