JAVA 和 C# 调用外部.exe文件,传值并等等exe完成,获取返回值

时间:2023-03-08 23:29:48
JAVA 和 C# 调用外部.exe文件,传值并等等exe完成,获取返回值

JAVA-

	String ykexe = getProperty("ykexe") + " " + tableout;   //getproperty("ykexe") 路径   tableout 参数,多个参数用空格隔开
StringBuilder infoMsg = new StringBuilder();
StringBuilder errorMsg = new StringBuilder();
String line = null;
while (true) {
Runtime rn = Runtime.getRuntime();
Process p = null;
try {
p = rn.exec(ykexe);
try {
p.waitFor();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader info = new BufferedReader(new InputStreamReader(
p.getInputStream()));
BufferedReader error = new BufferedReader(
new InputStreamReader(p.getErrorStream()));
while ((line = info.readLine()) != null) {
infoMsg.append(line).append("\n");
}
while ((line = error.readLine()) != null) {
errorMsg.append(line).append("\n");
}
if (infoMsg.toString().contains("OK")) {
return true;
} else {
System.out.println(errorMsg.toString());
return false;
}
} catch (IOException e) {
// TODO Auto-generated catch block
// p.destroy();
e.printStackTrace();
return false;
}

  C#

      string path = @"C:\GateWay\PrjCheck.exe";
string fileName = path;
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = fileName;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = "IHSUSAA_1508211711";//参数以空格分隔,如果某个参数为空,可以传入””
p.Start();
p.WaitForExit();
//此处可以返回一个字符串,此例是返回压缩成功之后的一个文件路径
string output = p.StandardOutput.ReadToEnd();