Tag: 进程

检查一些exe程序是否在Windows上运行

如何在Windows上检查某个.exe程序是否正在运行(正在进行中)? 我正在制作更新一个.exe程序的java应用程序。 因此,如果某个客户端使用该exe程序,我的应用程序会要求关闭exe程序,并在关闭后自动替换新的.exe文件。

如何找到在java中启动的进程的进程ID(pid)?

如果我通过Runtime.getRuntime().exec(…)或ProcessBuilder.start()在Java中获取进程对象,我可以通过Process.waitFor()等待它,就像Thread.join() ,或者我可以使用Process.destroy()来杀死它,这与已弃用的Thread.stop()类似。 但是:我如何找到过程对象的pid? 我在官方文档中没有看到这样做的方法。 我可以用Java做到这一点吗? 如果是这样,怎么样?

启动Firefox并等待它关闭

题 我想启动Firefox Web浏览器作为访问特定网站的过程,然后等到它关闭。 一种特殊情况是浏览器可能已经打开并运行,因为用户可能已经访问过某个网站。 在这种情况下,浏览器可能会在现有窗口中打开一个新选项卡,新启动的进程将立即终止。 这不应该混淆我的等待过程:要么,我想要一个新的浏览器窗口(如果可以某种方式强制执行,可能通过命令行参数)并等待它关闭,或保持现有的浏览器窗口并等待所有选项卡结果从我的过程关闭。 环境 我认为没关系,但我的编程环境是Java ,你可以假设我知道浏览器的路径。 例 我可以获得预期行为的唯一浏览器是Internet Explorer (叹息)。 在这里,我需要基本上在一个临时文件夹中创建一个新的批处理脚本 start /WAIT “” “C:\Program Files\Internet Explorer\iexplore.exe” -noframemerging http://www.test.com/ 然后我运行批处理脚本而不是直接浏览器,并在等待完成后删除它。 预期的过程 使目标过程更清晰: 我的程序开始了。 我的程序将Firefox浏览器作为单独的进程启动,并提供一个URL作为该进程的参数进行访问。 Firefox浏览器作为新进程异步运行,并访问提供的URL。 到目前为止,这很容易。 启动新进程(Firefox浏览器)后,我自己的程序应该等待所述进程终止。 这是困难的部分,因为 许多现代浏览器启动多个进程。 我需要等待所有这些。 许多现代浏览器可能以某种方式“脱离”我自己启动的进程。 对不起,我不知道一个更好的词,我的意思是:我启动一个进程然后启动另一个进程并立即终止,而另一个进程继续运行。 如果我等待我的程序最初启动的浏览器进程,则在浏览器仍处于打开状态时等待将完成。 上面的一个特例是在许多浏览器中实现的选项卡式浏览:如果浏览器在我启动时已经打开(在用户启动的单独进程中),我新启动的浏览器进程可能会简单地传达URL以访问现有流程并终止。 当我的程序认为她已关闭浏览器时,用户仍在我提供的URL上。 通过指定特殊的命令行参数(例如IE的noframemerging可能会禁止此问题。 一旦浏览器终止或者与我提供的URL相关的所有标签都已关闭,我的程序将停止等待,而是继续开展业务。 用例是我有一个可以在本地运行或在服务器上运行的Web应用程序。 如果它在本地运行,它将启动Web服务器,然后打开浏览器以访问条目页面。 关闭浏览器后,该Web应用程序也应该关闭。 这对于Internet Explorer来说是可靠的,对于所有其他情况,用户必须关闭浏览器,然后明确地关闭Web应用程序。 因此,如果我能够可靠地等待Firefox完成,这将使用户体验更好。 方案偏好: 解决方案按以下顺序排列 任何与纯Java JRE一起提供的东西。 这包括浏览器的特殊命令行参数。 需要我做的事情,例如,创建批处理脚本(例如在IE的情况下)。 任何需要第三方开源库的东西。 任何需要3rth党闭源图书馆的东西。 任何独立于平台的答案(同时适用于Windows和Linux)都优先于平台相关的答案。 […]

在Java中启动进程?

有没有办法在Java中启动进程? 在.Net这可以通过例如: System.Diagnostics.Process.Start(“processname”); 在Java中是否存在等价物,以便我可以让用户找到应用程序然后它适用于任何操作系统?