我正在尝试使用JNA(或Java Native Access)在Java中使用低级鼠标挂钩监视鼠标事件,以检查LLMHF_INJECTED
标志。我不知道如何像在c ++中那样将lparam指针强制转换为MSLLHOOKSTRUCT
。这就是我当前的回调函数的样子。
LowLevelMouseProc LLMP = new LowLevelMouseProc() {
public LRESULT callback(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode >= 0){
}
Pointer ptr = lParam.toPointer();
long peer = Pointer.nativeValue(ptr);
return User32.INSTANCE.CallNextHookEx(hook, nCode, wParam,new LPARAM(peer));
}
};
我还在自己的类中概述了钩子结构,如下所示:
public class MSLLHOOKSTRUCT extends Structure{
public static class ByReference extends MSLLHOOKSTRUCT implements Structure.ByReference {};
public POINT pt;
public DWORD mouseData;
public DWORD flags;
public DWORD time;
public ULONG_PTR dwExtraInfo;
@Override
protected List<String> getFieldOrder() {
return null;
}
}
我只需要知道如何将指针映射到MSLLHOOKSTRUCT
。