c# - 如何使用 C# 从 java 进程获取带有参数的 ProcessStartInfo?

标签 c# java process arguments

我正在尝试使用 C# 获取 java Process 对象。 问题是我的计算机上运行着几个 java 进程。

以下是我选择获取进程的方式:

Process[] processes = Process.GetProcessesByName("java");
foreach(Process proc in processes){
    //I need a filter here to get the correct process.
}

java 进程也由我的 C# 程序控制,如下所示:

 ProcessStartInfo startInfo = new ProcessStartInfo();
 startInfo.FileName = javahome + "\\bin\\java.exe";
 startInfo.Arguments = "-jar Example.jar port=88888";
 startInfo.WorkingDirectory = "\\testFolder";
 startInfo.UseShellExecute = false;
 startInfo.CreateNoWindow = true;
 Process proc = new Process();
 proc.StartInfo = startInfo;
 proc.Start();

我想要的是遍历 Process 数组来检查哪一个与我在另一个程序中启动的 Process 对象具有相同的参数。 但问题是当我这样做时:

 Console.WriteLine(proc.StartInfo.Arguments);

我发现里面什么也没有,即使我知道这是我在另一个程序中启动的进程。这让我很困惑。

有人知道这个问题吗?

最佳答案

你不能那样做。当您启动一个进程时,将该进程的处理程序保留在一个字典中,其中的值是进程参数,这是我认为您存档该进程的唯一方法。

        Dictionary<IntPtr, string> processArguments = new Dictionary<IntPtr,string>();

        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = javahome + "\\bin\\java.exe";
        startInfo.Arguments = "-jar Example.jar port=88888";
        startInfo.WorkingDirectory = "\\testFolder";
        startInfo.UseShellExecute = false;
        startInfo.CreateNoWindow = true;
        Process proc = new Process();
        proc.StartInfo = startInfo;
        proc.Start();

        processArguments.Add(proc.Handle, javahome + "\\bin\\java.exe");

....

        Process[] processes = Process.GetProcessesByName("java");
        foreach (Process proc in processes)
        {
            var arguments = processArguments.Where(x => x.Key.Equals(proc.Handle)).FirstOrDefault().Value;
        }

关于c# - 如何使用 C# 从 java 进程获取带有参数的 ProcessStartInfo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460532/

相关文章:

java - 通过套接字连接的多个 HTTP 请求

java - Gephi:使用工具包创建和流式传输动态图

java - 杀死在 Java 中调用的子进程的问题

javascript - process.on ('uncaughtException' 的最佳用途是什么,...)?

c# - 将零分配给变量是否可能比具有一百万次迭代的 For 循环花费更多时间?

c# - 查找 URL 方案

c# - <asp :FileUpload> doesn't have a file

java - 使用 JUnit 测试函数,其中函数获取用户输入

process - 进程地址空间中每个共享库的附加文本、数据和 bss 部分,这是真的吗?

c# - WPF MVVM 轻应用程序中的 SimpleIoc 问题