gpt4 book ai didi

c# - 检查 Java 应用程序是否正在从 C# .NET 运行

转载 作者:行者123 更新时间:2023-11-30 22:41:43 24 4
gpt4 key购买 nike

我从当前使用这个的 .bat 文件启动游戏服务器应用程序......

java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui

我希望能够从 C# .NET 应用程序检查它是否正在运行。有什么简单的方法可以做到这一点吗?

最佳答案

使用 Process类,您可以找到 java 进程,但您无法知道它们正在执行什么。您至少需要能够检查他们的命令行才能确定这一点。如果您所有的 Minecraft 服务器都使用相同的命令行参数启动,您可以使用 WMI 来查找。如果你想做你需要做的事情,你可以获得关联的 Process 对象。

// find all java processes running Minecraft servers
var query =
"SELECT ProcessId "
+ "FROM Win32_Process "
+ "WHERE Name = 'java.exe' "
+ "AND CommandLine LIKE '%minecraft_server%'";

// get associated processes
List<Process> servers = null;
using (var results = new ManagementObjectSearcher(query).Get())
servers = results.Cast<ManagementObject>()
.Select(mo => Process.GetProcessById((int)(uint)mo["ProcessId"]))
.ToList();

您需要添加对 System.Management.dll 库的引用并使用 System.Management命名空间。

存在这样的进程就足以知道它正在运行。您还可以通过检查每个进程的属性(例如 HasExited)来确定它是否以及何时结束。或使用 WaitForExit() 等待它.

关于c# - 检查 Java 应用程序是否正在从 C# .NET 运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716190/

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