有没有办法使用Java将窗口置于前台?也许可以使用一些操作系统库吗?
user32.dll
中定义,并且可以通过JNA访问。使用谷歌查找更多信息。
希望这能有所帮助。
package focus;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.win32.StdCallLibrary;
public class ForegroundWindow {
private interface User32 extends StdCallLibrary {
final User32 instance = (User32) Native.loadLibrary("user32", User32.class);
boolean SetForegroundWindow(HWND handle);
HWND FindWindowA(String className, String windowName);
HWND GetForegroundWindow();
}
private String getWindowName(String winName) {
String winText = "";
if (winText.contains(winName)) {
return winText;
}
return null;
}
public boolean bringWindowToFront(String className, String winName) {
HWND hWnd = User32.instance.FindWindowA(className, getWindowName(winName));
if (hWnd == null) {
return false;
}
return User32.instance.SetForegroundWindow(hWnd);
}
}
SWT 对 Win32 调用非常好。
import org.eclipse.swt.internal.win32.OS;
@SuppressWarnings("restriction")
int hwnd = OS.FindWindowW(null, "Titlein".toCharArray());
java.awt.Window
的东西,“toFront”方法会将其置于当前JVM中其他窗口的前面。 - khachik