我试图从前台窗口获取进程的名称,但遇到一些问题。
例如,如果我打开 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/