【问题标题】: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 2022-12-14
    • 2011-12-12
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2010-11-10
    相关资源
    最近更新 更多