java获取进程窗口,如何获取当前打开的窗口/进程与Java的列表?

这篇博客介绍了如何在Java中通过Runtime类执行`ps-e`命令来获取Unix系统的进程列表,并提供了当在Windows环境下应如何修改代码以执行等效的`tasklist.exe`命令。示例代码展示了如何读取并打印进程信息,对于跨平台的系统管理具有参考价值。
摘要由CSDN通过智能技术生成

这是从命令“ps -e”解析进程列表的另一种方法:

try {

String line;

Process p = Runtime.getRuntime().exec("ps -e");

BufferedReader input =

new BufferedReader(new InputStreamReader(p.getInputStream()));

while ((line = input.readLine()) != null) {

System.out.println(line); //

}

input.close();

} catch (Exception err) {

err.printStackTrace();

}

如果你使用的是Windows,那么你应该改变这一行:“Process p = Runtime.getRun …”etc …(第三行),如下所示:

Process p = Runtime.getRuntime().exec

(System.getenv("windir") +"\\system32\\"+"tasklist.exe");

希望信息帮助!

要根据Windows应用程序称或进程PID获取应用程序窗口标题,您可以使用Java的JNA(Java Native Access)库。JNA允许Java程序直接调用本地代码,因此您可以使用Windows API函数获取窗口标题。 以下是一个示例代码,它演示如何使用JNA库调用Windows API函数获取窗口标题: ``` import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef; import com.sun.jna.platform.win32.WinUser; public class WindowTitleGetter { public static void main(String[] args) { // 根据应用程序获取窗口标题 String appName = "notepad.exe"; String windowTitle = getWindowTitleByAppName(appName); System.out.println("Window title of " + appName + ": " + windowTitle); // 根据进程PID获取窗口标题 int pid = 1234; windowTitle = getWindowTitleByProcessId(pid); System.out.println("Window title of process " + pid + ": " + windowTitle); } private static String getWindowTitleByAppName(String appName) { final User32 user32 = User32.INSTANCE; WinDef.HWND hwnd = user32.FindWindow(null, appName); if (hwnd == null) { return null; } char[] buffer = new char[1024]; user32.GetWindowText(hwnd, buffer, buffer.length); return Native.toString(buffer); } private static String getWindowTitleByProcessId(int pid) { final User32 user32 = User32.INSTANCE; final WinDef.HWND[] hwnd = {null}; user32.EnumWindows(new WinUser.WNDENUMPROC() { public boolean callback(WinDef.HWND hWnd, Pointer arg1) { int[] pidArray = {0}; User32.INSTANCE.GetWindowThreadProcessId(hWnd, pidArray); if (pidArray[0] == pid) { hwnd[0] = hWnd; return false; } return true; } }, null); if (hwnd[0] == null) { return null; } char[] buffer = new char[1024]; user32.GetWindowText(hwnd[0], buffer, buffer.length); return Native.toString(buffer); } } ``` 在上面的示例中,getWindowTitleByAppName方法使用FindWindow函数根据应用程序称查找窗口句柄,然后使用GetWindowText函数获取窗口标题。getWindowTitleByProcessId方法使用EnumWindows函数枚举所有窗口找到与指定PID对应的窗口句柄,然后使用GetWindowText函数获取窗口标题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值