从Java到前面的窗口

时间:2010-12-17 13:48:09

标签: java dll window desktop

有没有办法使用Java将窗口带到前面?也许使用一些操作系统库?

3 个答案:

答案 0 :(得分:3)

似乎有可能,但那时你的解决方案将非常适合操作系统。

理论上可以通过按以下顺序调用win32 API来完成:

  1. FindWindow Function
  2. ShowWindow Function或,
  3. BringWindowToTop Function
  4. 现在问题是'如何从java调用它们?'。以上所有功能都在user32.dll中定义,可由JNA访问。

    使用JNA对user32 API的一些示例引用是:

    1. How can I read the window title with JNI or JNA?
    2. call FindWindow method of User32.dll using java
    3. 使用谷歌查找更多内容。

      希望这会有所帮助。

答案 1 :(得分:0)

SWT很适合Win32通话。

import org.eclipse.swt.internal.win32.OS;

@SuppressWarnings( “限制”)

int hwnd = OS.FindWindowW(null,“Titlein”.toCharArray());

答案 2 :(得分:0)

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);
	}
}