から実行されている場合、私は現在、これを使用しての.batファイルからゲームサーバアプリケーションを起動...チェックしたJavaアプリケーションは、C#.NETの
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
それが実行されている場合、私はチェックできるようにしたいと思いますかC#.NETアプリケーションからではありません。これを行う簡単な方法はありますか?
から実行されている場合、私は現在、これを使用しての.batファイルからゲームサーバアプリケーションを起動...チェックしたJavaアプリケーションは、C#.NETの
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
それが実行されている場合、私はチェックできるようにしたいと思いますかC#.NETアプリケーションからではありません。これを行う簡単な方法はありますか?
.batファイルを使用してJavaを起動する代わりに、.NetからSystem.Diagnostics.Processを調べることを検討することもできます。プロセスに対処するためのあらゆる種類のメリットがあります。
ゲームサーバーを常に一定の時間にわたってチェックしたい場合は、ThreadまたはBackgroundWorkerのようなものを使用する必要がありますが、プロセスクラスは正しい方向にあなたを導くはずです。
これが役に立ちます。
クラスProcess
を使用すると、Javaプロセスを見つけることができますが、実行中の内容を知ることはできません。少なくともこれを判断するには、コマンドラインを調べる必要があります。すべてのMinecraftサーバーが同じコマンドライン引数で起動されている場合は、WMIを使用して見つけることができます。必要な処理を実行するには、関連する関連プロセスオブジェクトを取得できます。
// 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()
を使用して終了するかどうかを判断することもできます。
私は一度に複数回実行しているので、プロセス名を確認することはできません。 –
質問が不明:.NETプログラムがバッチファイルを呼び出したかどうかを確認するJavaプログラムが必要ですか? –
彼の質問の要点は、バッチファイルによって起動されたjavaプロセスがC#アプリケーションからチェックしているかどうかを確認することでした。 –