这些是 winapi 方法
BOOL WINAPI SetWindowPlacement(
_In_ HWND hWnd,
_In_ const WINDOWPLACEMENT *lpwndpl
);
typedef struct tagWINDOWPLACEMENT {
UINT length;
UINT flags;
UINT showCmd;
POINT ptMinPosition;
POINT ptMaxPosition;
RECT rcNormalPosition;
} WINDOWPLACEMENT, *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
我的Java代码:-
class WINDOWPLACEMENT{
public int length;
public int flags;
public int showCmd;
public POINT ptMinPosition;
public POINT ptMaxPosition;
public RECT rcNormalPosition;
}
WINDOWPLACEMENT wind = new WINDOWPLACEMENT();
User32Extra.INSTANCE.GetWindowPlacement(hwndLSM, wind);
错误是
java.lang.IllegalArgumentException: Unsupported argument type jna.extra.WINDOWPLACEMENT at parameter 1 of function GetWindowPlacement
如何通过 JNA 使用 GetWindowPlacement/SetWindowPlacement?
最佳答案
java.extra.WINDOWPLACMENT
必须扩展 com.sun.jna.Structure
并正确实现 getFieldOrder()
。
编辑
在构造函数中设置长度,以及getFieldOrder()
定义:
public class WINDOWPLACEMENT extends Structure {
public WINDOWPLACEMENT() {
this.length = size();
}
public List getFieldOrder() {
return Arrays.asList("length", "flags", "showCmd", "ptMinPosition", "ptMaxPosition", "rcNormalPosition");
}
// ...
}
关于java - 为什么我对 winapi GetWindowPlacement 的调用失败(使用 JNA)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31312793/