相关疑难解决方法(0)

检查桌面应用程序是否已在运行

我正在研究基于Java的桌面应用程序.一个要求是,如果应用程序正在运行并且用户尝试再次启动应用程序,则应该执行类似于显示某些警报等操作.

我使用文件,当用户运行应用程序时,它将一些文本添加到文件中并将其保存在本地系统的某个位置,当用户再次尝试运行应用程序时,我检查文件并相应地处理情况,但是存在一些问题与此相反,如果应用程序异常终止,我无法删除该文件,在这种情况下,当用户尝试运行应用程序系统时,显示应用程序已在运行但实际应用程序异常终止的警报.

我做了一些研发,发现我可以阅读Windows任务管理器列表然后我可以检查我的应用程序是否正在运行.它工作正常但在测试期间我遇到了一个问题,即在Windows中有一个名为"tasklist"的软件/实用工具转到"开始 - >运行"并输入任务列表它将显示任务列表.如果您的系统上未安装此实用程序或由于某种原因删除/损坏此实用程序,则此操作无效,并且用户可以多次启动该应用程序的同样问题.这是访问taskmanager项的代码

Process p = Runtime.getRuntime().exec(
                System.getenv("windir") + "/system32/" + "tasklist.exe");

BufferedReader input = new BufferedReader(new InputStreamReader(
                p.getInputStream()));
while ((line = input.readLine()) != null) {
/*
Make the comparison here and show alert.
*/
Run Code Online (Sandbox Code Playgroud)

}

问题:检查应用程序是否已在运行的好方法是什么?我正在使用Java进行应用程序,并使用高级安装程序来创建应用程序的安装程序.

java singleton desktop-application

3
推荐指数
1
解决办法
5241
查看次数

如何检查进程是否在 Windows 上运行?

我正在尝试做的是一个程序,以了解它是否WindowsJava. 我在网上查了一下,找到了两种不同的解决方案:

但这根本不是我要找的。

根据选项 1,我想要一种方法来引用进程(并检测它是否处于活动状态/正在运行),但无需进行完整tasklist搜索,然后对其进行搜索。我正在寻找是否有直接的方法来做到这一点。

我也向任务列表添加了一个过滤器,但找不到任何过滤器来获取我正在寻找的进程。我tasklist /?在命令行上看到了所有使用的选项。

然后我搜索了有关第二个选项和wmic(我以前从未听说过的)的信息,它似乎wmic允许您在命令行上执行任务(如果我错了,请纠正我)。

所以,在这里我有两个问题

  • 是否有直接方法可以知道进程是否在使用 Java 的 Windows 上处于活动状态?尽量避免在完整的任务列表中搜索或使用wmic.

  • 如果不可能,如果我们谈论高效编程,我上面提到的两个选项中哪个更好?

提前致谢!

java windows process

2
推荐指数
1
解决办法
1万
查看次数

关于流程的pid

我有一个有点愚蠢的问题,如果我有一系列创建的进程......这些不一定是某种继承,进程的pid必须是数字连续或随机的pid?

linux pid process

0
推荐指数
1
解决办法
6020
查看次数

标签 统计

java ×2

process ×2

desktop-application ×1

linux ×1

pid ×1

singleton ×1

windows ×1