51,409
社区成员
发帖
与我相关
我的任务
分享
亲 我照着你的代码写进去了,excel打开了,但是控制台没有输出任何信息,当我把excel关闭后会输出“no”;junittest在excel关闭之前一直是在运行中的,当关闭excel后才会显示运行成功,该怎么修改呢。我的目的就是打开指定的excel后然后通过pid再关闭掉。[/quote]
不好意思弄错了
亲 我照着你的代码写进去了,excel打开了,但是控制台没有输出任何信息,当我把excel关闭后会输出“no”;junittest在excel关闭之前一直是在运行中的,当关闭excel后才会显示运行成功,该怎么修改呢。我的目的就是打开指定的excel后然后通过pid再关闭掉。[/quote]
我这个tasklist命令是在excel已经打开的时候也就是获取进程的时候才显示的。打开一个excel文件是不会返回什么信息的。
Process p=Runtime.getRuntime().exec("cmd /c "+filePath);
Thread.sleep(3000);
p=Runtime.getRuntime().exec("cmd /c tasklist -fi \"imagename eq excel.exe\"");
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream(),"gbk"));
String line=null;
while((line=reader.readLine())!=null){
System.out.println(line);
}
reader.close();

public class PidTest {
public static void main(String[] args) throws IOException,
InterruptedException {
Runtime rt = Runtime.getRuntime();
rt.exec("cmd /c C:/Users/eacfgjl/Desktop/MABEZ/EP2/regression_ST_test_spec.xls");
Thread.sleep(3000);
String processName = null;
String cmd = "tasklist /nh /FI \"IMAGENAME eq EXCEL.EXE\"";
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
if (line.indexOf("EXCEL.EXE") != -1) {
String[] lineArray = line.split(" ");
processName = lineArray[0].trim();
System.out.println(processName);
Runtime.getRuntime().exec("taskkill /IM " + processName);
}
}
}
}
Process p=Runtime.getRuntime().exec("cmd /c tasklist -fi \"imagename eq excel.exe\"");
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream(),"gbk"));
String line=null;
while((line=reader.readLine())!=null){
System.out.println(line);
}
reader.close();