我必须创建一个应用程序,它将自动打开一个powerpoint文件,让它播放,然后关闭它。我不仅需要弄清楚如何关闭它,而且还必须检测它何时关闭或停止。 第一种选择: 我知道每个powerpoint会播放多长时间,所以我可以在何时关闭文件进行硬编码。我只需要知道如何做到这一点。桌面类(我能找到)中没有方法可以关闭。 第二种选择: 如果有人知道微软powerpoint api让我打开powerpoint并使用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);
}
答案 0 :(得分:1)
可能这是关闭外部程序的解决方案: http://www.java-forums.org/new-java/59691-close-another-program.html#post285956
如果要检测程序何时停止运行,那么可以使用循环启动新线程,该循环将不时检查程序进程是否仍在运行,使用链接中提到的相同方法。
这仅适用于一个(Windows)平台,Java不是此类任务的最佳选择。
答案 1 :(得分:1)
这是使用JNA的解决方案。首先我们得到句柄,我们使用窗口的“类名”进行搜索。您可以使用特殊实用程序(如Spy ++(Visual Studio附带))确定特定程序(在本例中为Powerpoint)的类名。使用类名和窗口标题可以使搜索更精确(但这里我只使用类名),所以如果你有多个演示文稿正在运行......你可能无法关闭好的演示文稿!。
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinUser;
import com.sun.jna.platform.win32.WinDef.HWND;
// https://github.com/twall/jna#readme
// you need 2 jars : jna-3.5.1.jar and platform-3.5.1.jar
public class KillMyPP {
public static void main(String[] args) {
HWND hwnd = User32.INSTANCE.FindWindow("screenClass", null);
if (hwnd == null) {
System.out.println("PPSX is not running");
}
else {
User32.INSTANCE.PostMessage(hwnd, WinUser.WM_QUIT, null, null);
}
}
}