Как использовать Java для перемещения окон Windows на экране?

Я обдумывал создание оконного менеджера с графическим интерфейсом, возможно, на Java. Тем не менее, я изо всех сил пытаюсь найти лучший способ переместить окна, не принадлежащие моей программе.

Пока что мне кажется, что я должен использовать JNI для взаимодействия с Windows API, но я не нашел никаких полезных примеров.

Кто-нибудь знает как это сделать?

Спасибо!

PS. Я не обязательно связан с Java, если есть лучший язык для этого.

1 ответ

Решение

Если цель состоит в том, чтобы иметь быстрый оконный менеджер, вам, безусловно, лучше с C++ или C#, или, возможно, даже Delphi.

Но если вы больше всего знакомы с Java, это можно сделать.

Если вы выберете (устаревший) JNI, вам придется написать DLL на C или Delphi, которую будет использовать ваше Java-приложение. Вместо этого вы должны использовать JNA для доступа к функциям API обработки окон Windows.

Некоторые из функций, которые вы бы использовали:

    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 на MSDN

Другие вопросы по тегам