2

我一直在考虑用 GUI 制作一个窗口管理器,可能是在 Java 中。但是,我正在努力找出移动不属于我的程序的窗口的最佳方法。

到目前为止,我似乎应该使用 JNI 来与 Windows API 交互,但我还没有找到任何有用的示例。

有谁知道如何做到这一点?

谢谢!

PS。如果有更好的语言可以做到这一点,我不一定与 Java 相关。

4

1 回答 1

3

如果目的是拥有一个快速的窗口管理器,那么使用 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) 后,您可以对该窗口执行任何您喜欢的操作。

MSDN 上的 EnumWindows 函数参考

于 2012-04-04T10:14:05.743 回答