如何从任务管理器进程列表中的进程列表中区分不同的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应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

访问 Windows 10 任务管理器进程列表

任务列表与任务管理器内存

从任务管理器详细信息列表视图中获取项目

进程资源管理器和任务管理器之间的区别[关闭]

如何在任务管理器中使用不同的进程名称(对于当前进程)名称?

C# - 在任务管理器中打开应用程序作为第二个进程