【问题标题】:How to use Java to move Windows windows around on screen?如何使用 Java 在屏幕上移动 Windows 窗口?
【发布时间】:2023-03-07 18:13:02
【问题描述】:
我一直在考虑用 GUI 制作一个窗口管理器,可能是在 Java 中。但是,我正在努力找出移动不属于我的程序的窗口的最佳方法。
到目前为止,我似乎应该使用 JNI 来与 Windows API 交互,但我还没有找到任何有用的示例。
有人知道怎么做吗?
谢谢!
PS。如果有更好的语言可以做到这一点,我不一定与 Java 相关。
【问题讨论】:
标签:
java
winapi
java-native-interface
window-managers
window-management
【解决方案1】:
如果目的是拥有一个快速的窗口管理器,那么使用 C++ 或 C# 甚至是 Delphi 肯定会更好。
但如果你最熟悉 Java 也可以。
如果您选择(老化)JNI,您将不得不用 C 或 Delphi 编写 Java 应用程序将使用的 DLL。您应该改用JNA 来访问Windows 的窗口处理API 函数。
您将使用的一些功能是:
HWND WINAPI GetWindow(HWND hWnd, UINT uCmd);
HWND WINAPI FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);
BOOL WINAPI EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam);
HWND WINAPI WindowFromPoint(POINT Point);
BOOL WINAPI MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
一旦您获得窗口句柄 (HWND),您就可以对该窗口做任何您想做的事情。
EnumWindows function reference at MSDN