如何从任务管理器进程列表中的进程列表中区分不同的JavaWS应用程序?
Posted
技术标签:
【中文标题】如何从任务管理器进程列表中的进程列表中区分不同的JavaWS应用程序?【英文标题】:How to differentiate between different JavaWS applications from the list of processes in the task manager process list? 【发布时间】:2016-08-26 07:12:35 【问题描述】:我正在使用 JavaWS 启动应用程序,然后如何检查该应用程序是否在用户的机器上运行,因为它在任务管理器进程列表中的名称不是我在 JNLP 文件中给出的名称。
注意。我检查了任务管理器进程列表,但该进程的名称是 javaw.exe 并且所有使用 JavaWS 的应用程序都将具有相同的名称。我的问题是,如果用户启动了多个 JavaWS 应用程序,那么我们如何识别我们想要检查的进程?我想获取进程的 PID,但不幸的是没有任何方法可以获取进程的 PID。我在 Windows 上工作。
【问题讨论】:
另见What is the XY problem? 嘿@Andrew,我想你问错了。我只需要确定一个进程是否正在运行,而不是在启动同一个应用程序的另一个实例时执行一些操作。仅供参考,如果前一个实例已经在运行,则不允许在我的应用程序中启动同一个进程的另一个实例。我在问如何找出一种方法来区分使用 JavaWS 的进程,因为它们的名称在任务管理器进程列表中是相同的。除了我的应用程序之外,可能还有其他应用程序可能正在使用 JavaWS。 【参考方案1】:..如何检查该应用程序是否在用户的机器上运行..
无需求助于检查进程,这是一种固有的操作系统特定方法。
JNLP API 提供了SingleInstanceService
,其中..
..允许在 Java Web Start 下启动的应用程序将自己注册为单例,并在用户尝试启动它们的新实例时传入新参数集。
然后,您的代码将决定是更新当前应用、将其置于最前面还是启动新实例。
【讨论】:
嘿@Andrew,我想你问错了。我只需要确定一个进程是否正在运行,而不是在启动同一个应用程序的另一个实例时执行一些操作。仅供参考,如果前一个实例已经在运行,则不允许在我的应用程序中启动同一个应用程序的另一个实例。我在问如何找出一种方法来区分使用 JavaWS 的进程,因为它们的名称在任务管理器进程列表中是相同的。除了我的应用程序之外,可能还有其他应用程序可能正在使用 JavaWS。 “我只需要查找一个进程是否正在运行..” 什么应用程序。您指的是这些“过程”吗?如果它们是 your app. 的其他实例,那么考虑到SingleInstanceService
,则没有必要。如果是应用程序。不是由您的应用程序创建的。那么这样做的最终目的是什么?另一种说法是,您试图为最终用户提供什么功能?到目前为止,您的问题描述不是很有启发性,我敦促您(重新)阅读有关 XY 问题的文章。如果您理解它,您可能能够更好地描述所需的内容。
"在 我的应用程序中,同一应用程序的另一个实例不允许启动" 是的,我不不知道如何更简单地表达它。 这就是SingleInstanceService
的用途!实际上它涵盖的范围更多,因为您可以决定忽略任何新应用。调用(因此应用程序的屏幕上只有一个进程),或(这里似乎不相关)您(程序员)可以更改当前应用。 *或(此处也不相关)您可以选择允许应用的第二个实例。打开)。
感谢@Andrew 提供所有帮助 :)
如果它有助于解决问题,请accept the answer。【参考方案2】:
在 Windows7 上,您可以选择要在任务管理器中显示的列列表。
转到View -> Select Process Page Columns
并选择要显示的Command line
列。
您应该能够通过命令行区分不同的 javaw 进程,包括类路径、主类名等。
【讨论】:
以上是关于如何从任务管理器进程列表中的进程列表中区分不同的JavaWS应用程序?的主要内容,如果未能解决你的问题,请参考以下文章