我一直在考虑用GUI制作一个窗口管理器,可能是用Java。然而,我正在努力找出移动不属于我的程序的窗口的最佳方式。
到目前为止,我似乎应该使用JNI与Windows API接口,但我还没有找到任何有用的例子。
有人知道怎么做吗?
谢谢!
PS。如果有更好的语言可以在.
如果目的是拥有一个快速的窗口管理器,那么使用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函数引用