java - 如何使用 Java 从 Windows 的前台窗口获取进程名称?

标签 java windows process window

我试图从前台窗口获取进程的名称,但遇到一些问题。

例如,如果我打开 Mozilla firefox,它会注册类似“www.google.com - Mozilla Firefox”的内容。在 Photoshop 中,它会注册“文件名.psd”+您正在处理的缩放或图层名称。

我想从前台窗口获取进程名称,我不希望它检测您正在处理的每一层等,我只想它获取进程名称(photoshop.exe 或类似的东西)

现在,我使用它来获取前台窗口名称和该窗口的进程 ID:

public String getActiveProcess(){                   
    char[] buffer;
    HWND hwnd;
    String processName = ".... // ";
    IntByReference IdByRef = new IntByReference();

    //get window information
    buffer = new char[MAX_TITLE_LENGTH * 2];
    hwnd = User32.INSTANCE.GetForegroundWindow();

    //get process ID from window in foreground
    int processid = User32.INSTANCE.GetWindowThreadProcessId(hwnd, IdByRef);

    HANDLE processHandle = Kernel32.INSTANCE.OpenProcess(processid, true, MAX_TITLE_LENGTH);

    return processName;     
}

最佳答案

假设您可以调用任意Win32函数,则可以使用 GetWindowThreadProcessId() 获取进程ID ,使用 OpenProcess() 打开句柄,并使用 GetModuleBaseName() 获取进程的可执行文件名称.

关于java - 如何使用 Java 从 Windows 的前台窗口获取进程名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39083253/

相关文章:

c# - Thread.Sleep() 导致 Process.Kill() 出现问题

python - Windows 版 Python 中的控制台输入历史记录存储在哪里?

windows - 命令提示符中的基本文本编辑器?

java - 用 Java 流畅地读取进程的输出

java - 剪辑第二次不播放声音

windows - 使用 QSettings 在 Windows 上读取注册表值

javascript - 通过 nodejs 重新附加到生成的进程

java - 多个 channel 可以使用同一个 LengthFieldBasedFrameDecoder 实例吗?

java - 从java到php5?

java - 应用引擎 : Keep Socket Open more than 2 Minutes