Чтобы получить координаты x и y «любого другого не связанного приложения», вам нужно будет выполнить запрос к ОС, а это, вероятно, означает использование либо JNI, JNA, либо какой-либо другой скриптовой утилиты, такой как AutoIt (если Windows). Я рекомендую либо JNA, либо утилиту для написания сценариев, поскольку обе они намного проще в использовании, чем JNI (по моему ограниченному опыту), но чтобы использовать их, вам нужно загрузить некоторый код и интегрировать его с вашим Java-приложением.
РЕДАКТИРОВАТЬ 1
Я не являюсь экспертом JNA, но я немного возился с этим, и вот что я получил, чтобы получить координаты окна для некоторого именованного окна:
import java.util.Arrays;
import com.sun.jna.*;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.win32.*;
public class GetWindowRect {
public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class,
W32APIOptions.DEFAULT_OPTIONS);
HWND FindWindow(String lpClassName, String lpWindowName);
int GetWindowRect(HWND handle, int[] rect);
}
public static int[] getRect(String windowName) throws WindowNotFoundException,
GetWindowRectException {
HWND hwnd = User32.INSTANCE.FindWindow(null, windowName);
if (hwnd == null) {
throw new WindowNotFoundException("", windowName);
}
int[] rect = {0, 0, 0, 0};
int result = User32.INSTANCE.GetWindowRect(hwnd, rect);
if (result == 0) {
throw new GetWindowRectException(windowName);
}
return rect;
}
@SuppressWarnings("serial")
public static class WindowNotFoundException extends Exception {
public WindowNotFoundException(String className, String windowName) {
super(String.format("Window null for className: %s; windowName: %s",
className, windowName));
}
}
@SuppressWarnings("serial")
public static class GetWindowRectException extends Exception {
public GetWindowRectException(String windowName) {
super("Window Rect not found for " + windowName);
}
}
public static void main(String[] args) {
String windowName = "Document - WordPad";
int[] rect;
try {
rect = GetWindowRect.getRect(windowName);
System.out.printf("The corner locations for the window \"%s\" are %s",
windowName, Arrays.toString(rect));
} catch (GetWindowRect.WindowNotFoundException e) {
e.printStackTrace();
} catch (GetWindowRect.GetWindowRectException e) {
e.printStackTrace();
}
}
}
Конечно, чтобы это работало, библиотеки JNA нужно будет загрузить и поместить в путь к классам Java или в путь сборки вашей IDE.