有没有办法在Java中启动进程?在.Net这可以通过以下方式完成:
System.Diagnostics.Process.Start("processname");
Run Code Online (Sandbox Code Playgroud)
在Java中是否有等价物,以便我可以让用户找到应用程序然后它适用于任何操作系统?
如何在Windows上检查某个.exe程序是否正在运行(正在进行中)?
我正在制作更新一个.exe程序的java应用程序.因此,如果某个客户端使用该exe程序,我的应用程序会要求关闭exe程序,并在关闭后自动替换新的.exe文件.
我正在尝试使用JNA返回特定Windows进程的详细信息.不完全确定如何做到这一点.无法在互联网上找到太多帮助.我想要返回的一些信息包括CPU和内存使用情况.以下是我发现的一个例子.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import com.sun.jna.*;
import com.sun.jna.Library.Handler;
import com.sun.jna.platform.win32.*;
import com.sun.jna.platform.win32.Advapi32Util.*;
import com.sun.jna.platform.win32.WinNT.*;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.*;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.*;
import com.sun.jna.win32.W32APIOptions;
public class WindowsProcess {
public static void main(String[] args) {
WinNT winNT = (WinNT) Native.loadLibrary(WinNT.class, W32APIOptions.UNICODE_OPTIONS);
WinNT.HANDLE snapshot = winNT.CreateToolhelp32Snapshot(Tlhelp32.TH32CS_SNAPPROCESS, new WinDef.DWORD(0));
Thelp32.PROCESSENTRY32.ByReference processEntry = new Tlhelp32.PROCESSENTRY32.ByReference();
while (winNT.Process32Next(snapshot, processEntry)) {
System.out.println(processEntry.th32ProcessID + "\t" + Native.toString(processEntry.szExeFile));
}
winNT.CloseHandle(snapshot);
}
}
Run Code Online (Sandbox Code Playgroud)