花了两天的时间研究关于java程序打开一个外部的exe程序,关闭已经打开的exe进程的问题,总结如下:
场景:开发一个可视化窗口,两个按钮,启动,关闭。对两个按钮实现MouseListener接口,在鼠标按下按钮时执行操作。以下就是这两个按钮的功能。
启动:
Runtime.getRuntime().exec("E:/myClient/punchClient.exe");//启动.exe文件的方法
Runtime.getRuntime().exec("cmd.exe /c start c://example.exe");也是方法之一。
由于本功能只是启动一个项目,并没有其他操作,所以未声明Process 来接收返回值。似乎,打开一个exe文件变得很简单,至于Runtime的用法,以及exec方法的用法,可以百度下,不再多说。
关闭:
对于如何在一个java程序里关闭一个exe的进程,搜遍百度,归纳如下:
taskkill--window linux下用kill 执行该操作的用户必须有kill命令权限
对于taskkill 如果再cmd窗口执行该命令提示不是内部命令,而在windows\system32中双击可以的话,那加入完整路径试试吧。
String command = "cmd.exe /c c:\\windows\\system32\\taskkill /f /im punchClient.exe";
Process proc =Runtime.getRuntime().exec(command);
这里taskkill的参数意思就不介绍了。
这种方式在我的java环境里运行失败。接下来试试下面这种:
Runtime.getRuntime().exec("tskill punchClient"); 测试成功
注意这里是tskill 进程名称不带.exe,带了就不行的哦。
tskill PID/ProcessName
既然这样,查找进程列表,取其PID ,试试
Runtime.getRuntime().exec("tskill 5036"); 也成功,
还有一种方法:
Runtime.getRuntime().exec("cmd.exe /c c:\\windows\\system32\\taskkill /f /pid 5036");测试成功
由于我的path的问题,这里必须是完整路径。
另外:获取PID的方法 关键代码如下
Process listprocess = Runtime.getRuntime().exec("cmd.exe /c tasklist");
InputStream is = listprocess.getInputStream();
byte[] buf = new byte[256];
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
String str = null;
while ((str = r.readLine()) != null) {
String id = null;
Matcher matcher = Pattern.compile(programName + "[ ]*([0-9]*)").matcher(str);
while (matcher.find()) {
if (matcher.groupCount() >= 1) {
id = matcher.group(1);
if (id != null) {
Integer pid = null;
try {
pid = Integer.parseInt(id);
} catch (NumberFormatException e) {
e.printStackTrace();
}
if (pid != null) {
Runtime.getRuntime().exec("cmd.exe /c taskkill /f /pid " + pid);
System.out.println("kill progress");
}
}
}
相关推荐
总结来说,这个Java程序是一个基于GUI的定时任务管理工具,能够帮助用户在指定时间启动.exe程序,甚至可以执行定时关机操作。开发者利用Java的GUI库构建了友好的用户界面,并通过编程实现了定时任务的调度和管理,...
java使用jna开启关闭第三方应用程序,附简单的例子,打开一个记事本,朋友们也可以改为自己需要打开的应用程序
在Java中,可以通过`java.lang.Runtime`类或者`java.lang.ProcessBuilder`类来启动外部程序(exe文件)。这两种方式都可以实现同样的功能,但在实际开发过程中,选择哪一种方式取决于具体需求和个人偏好。 - **...
### Java窗口的打开与关闭——基于Swing框架的实现 #### 概述 在Java图形用户界面编程中,Swing框架提供了丰富的组件和事件处理机制,使得开发人员能够轻松地创建复杂的用户界面。本文将围绕如何利用Swing框架中的...
在IT行业中,动态显示程序的打开和...总结来说,动态显示程序的打开和关闭过程是一个结合了编程技术、UI设计、性能优化和用户体验的综合过程。通过精心设计和实现,可以使应用程序更加吸引人,同时提供更佳的使用感受。
然而,在使用java线程池时,一个常见的问题是:使用完线程池后到底要不要关闭?本文将通过实例代码和详细解释,告诉大家使用完线程池后一定要关闭,否则可能会导致内存泄露和应用崩溃。 首先,让我们了解一下java...
这种工具对于那些不想或不熟悉使用命令行的用户很有用,他们可以直接双击`.exe`文件来运行Java程序,而无需知道如何执行批处理文件或了解Java环境。批处理到exe转换器通常会封装批处理文件的内容和必要的Java运行时...
在跨平台的软件开发中,有时需要Java程序与C++程序进行通信,以便实现特定功能或数据共享。本文将探讨如何使用内存映射文件(Memory Mapped Files)和Java Native Interface(JNI)来解决这个问题。这种方法高效且...
这种系统通常包含一个服务器端和多个客户端,通过网络通信协议进行数据交换,实现各种功能,如远程关机、打开程序、关闭程序等。 在本压缩包中,包含了服务器和客户端两个文件夹,这表明该系统是分发式的,服务器...
在Java编程领域,GUI(图形用户界面)是创建桌面应用程序不可或缺的一部分。本示例程序"Java GUI简单程序"旨在教你如何构建一个基本的GUI界面,同时整合数据库连接、查询功能,并利用JTable来展示查询结果。这是一个...
这些库提供了API,允许Java程序打开、读写和关闭串口,从而与PLC进行数据交换。 “Java语言在西门子PLC串口通信程序中的应用.pdf”这份文档很可能详细介绍了如何设置串口参数(如波特率、数据位、停止位和校验位)...
是关于Java IO流的,代码中出现在一个多线程的系统中,其中一段代码在打开一个文件操作流用完以后没有及时关闭,开始以为很快会出现打开文件太多或者导致内存溢出,但是在运行了很长时间以后仍然没有出现问题,...
【标题】:“经典Java程序源代码”探讨 【描述】:本文将深入解析两段经典的Java源代码,分别是加法器(Adder.java)和小型记事本(Notepad.java)。这些程序对于初学者来说是很好的学习资源,它们涵盖了基础的GUI...
最后,根据压缩包子文件的文件名称“自动打开关闭程序”,我们可以推测这是一个包含了实现上述功能的源代码或已编译的可执行文件。用户在使用前需要解压文件,然后按照文件的说明或者运行指南进行操作,可能还需要...
JAVA程序设计中的异常和断言是程序开发过程中的重要概念,它们帮助开发者处理程序运行时可能出现的问题,确保程序的稳定性和可靠性。 异常处理是JAVA语言中的一个关键特性,用于处理程序执行过程中出现的非正常情况...
1. **文件**菜单:可能包含“新建”、“打开”、“保存”、“另存为”、“退出”等选项,用于处理文件的创建、读取、存储以及关闭程序的操作。 2. **编辑**菜单:通常会有“复制”、“粘贴”、“剪切”、“撤销”、...
在【标题】"经典java程序源代码"中,我们可以看到这是一个关于Java编程的学习资源,包含了加法器、小型记事本等小程序的源代码。这些示例程序可以帮助初学者更好地理解和实践Java编程语言的基本概念和组件。 首先,...
在Java编程中,实现一个程序启动界面,通常是为了提供用户友好的体验,展示程序加载进度,增加应用程序的专业感。这个启动界面通常会包含一个进度条或其他动态元素来表示程序正在初始化或加载资源。下面我们将详细...
Java程序调用存储过程是数据库操作中的常见任务,特别是在处理大量数据或需要高效执行复杂业务逻辑时。...在复杂的业务场景中,合理使用存储过程和Java程序的结合,可以大大提高系统的效率和稳定性。
在JavaCV库中,线程管理和关闭是关键操作,特别是在涉及到实时视频推流的应用场景中。JavaCV是一个Java接口,提供了对多个计算机视觉库的访问,包括OpenCV、FFmpeg等,广泛用于图像处理和流媒体操作。在这个“线程...