如何使用Java关闭在本机桌面上运行的外部程序(Powerpoint)?
我必须创建一个应用程序,自动打开powerpoint文件,让它播放,然后关闭它。我不仅需要知道如何关闭它,还必须检测它何时关闭或停止。 第一种选择: 我知道每个powerpoint将播放多长时间,因此我可以硬编码何时关闭文件。我只是想知道怎么做。桌面类(我可以找到)中没有用于关闭的方法。 第二种选择: 如果有人知道一个microsoft powerpoint api,它允许我打开powerpoints并使用java进行幻灯片放映,从而获得状态或其他信息,那就太好了。我不必进入每个演示文稿,计算每张幻灯片上的幻灯片数量和转换计时器
打开、让它播放和关闭它是我需要创建的应用程序的一小部分。但到目前为止,我对这个问题的看法如下:
File myfile = new File("PowerPoint.ppsx");
try {
Desktop.getDesktop().open(myfile);
} catch (IOException ex) {
Logger.getLogger(Sc.class.getName()).log(Level.SEVERE, null, ex);
}
# 1 楼答案
可能这就是关闭外部程序的解决方案: http://www.java-forums.org/new-java/59691-close-another-program.html#post285956
如果您想检测程序何时停止运行,则可以使用循环启动新线程,循环将不时检查程序进程是否仍在运行,方法与链接中提到的相同
这是只针对一个(Windows)平台的解决方案,Java不是此类任务的最佳选择
# 2 楼答案
这里是一个使用JNA的解决方案。首先我们得到句柄,我们使用窗口的“类名”进行搜索。您可以使用特殊实用程序(如Spy++)(包含在Visual Studio中)来确定特定程序(在本例中为Powerpoint)的类名。使用类名和窗口标题可以使搜索更加精确(但这里我只使用类名),因此如果您运行多个演示文稿。。。你不能关上好的