gpt4 book ai didi

java - 使用 `Runtime.getRuntime().exec("explorer.exe 时 Netbeans 项目仍在运行");`

转载 作者:太空宇宙 更新时间:2023-11-04 07:28:15 25 4
gpt4 key购买 nike

我正在开发一种(非恶意)屏幕锁定类型的 Swing 应用程序,并且我已经改编了 Martijn Courteaux 在 Use Java to lock a screen 的回答中的代码。去做这个。问题是当我使用Runtime.getRuntime().exec("explorer.exe");时要在程序关闭时重新打开 Explorer 进程,Netbeans 认为我的项目仍在运行,因为生成的 explorer.exe 正在运行。 CMD提示符和JCreator没有这个问题。

任何人都可以举一个调用像 explorer.exe 这样的命令的首选方式的示例吗?避免 Netbeans 发生这种情况?

编辑:我在程序启动时关闭资源管理器进程(包括任务栏)。当我运行资源管理器时,并不是打开 Windows 资源管理器窗口(对于给定的答案来说,它完全可以正常工作),而是恢复常规的 Windows UI。

最佳答案

问题是Runtime@exec正在等待子进程退出。这是默认行为。

如果您想执行无父进程(即使子进程仍在运行,父进程也可以终止的进程),您需要更有创意。

我们使用...

"cmd /C start /B /NORMAL " + yourCommand

我强烈推荐使用ProcessBuilder,因为它使构建和执行外部命令变得更加容易。

类似...

ProcessBuilder pb = new ProcessBuilder("cmd", "/C", "start", "/B", "/NORMAL", "explorer.exe");
pb.start();

例如......

nb 我运行的是 NetBeans,程序在资源管理器打开后退出。

有一个小缺点。这不喜欢长文件名。您需要找到某种方法来生成短文件名/路径才能使其工作。我被迫为此使用 JNI 解决方案

关于java - 使用 `Runtime.getRuntime().exec("explorer.exe 时 Netbeans 项目仍在运行");`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18196499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com