如果我在任务栏中将一个进程最小化了,有没有办法从 Java 中将其最大化?
我知道这个进程的名称,但是否可能呢?
我知道这个进程的名称,但是否可能呢?
HWND WINAPI FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);
BOOL WINAPI ShowWindow(HWND hWnd, int nCmdShow);
import com.sun.jna.win32.StdCallLibrary;
interface User32 extends StdCallLibrary {
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx
int FindWindowA(String className, String windowName);
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx
boolean ShowWindow(int window, int command);
}
import com.sun.jna.Native;
public class Program {
private static final int SW_RESTORE = 9;
public static void main(String[] args) {
User32 user32 = Native.loadLibrary("User32.dll", User32.class);
int window = user32.FindWindowA(null, "Google Chrome");
boolean success = user32.ShowWindow(window, SW_RESTORE);
if (success) {
System.out.println("Success");
} else {
System.out.println("Fail: " + Native.getLastError());
}
}
}
window
将为0(NULL),导致以下调用失败。我不确定 SW_RESTORE 是否需要单独使用或是否需要与其他标志一起使用。lacuna
project 中的一些示例,windows/WindowsPidEnumerator.java 和 windows/WindowsNativeProcessCollector.java 文件可能会有所帮助。但要注意,这是一个课程项目,它具有许多令人讨厌的抽象层。