Я пытаюсь отслеживать события мыши с помощью низкоуровневой зацепки мыши в Java, используя JNA (или собственный доступ к Java), чтобы проверить флаг LLMHF_INJECTED
.Я не могу понять, как привести указатель lparam к MSLLHOOKSTRUCT
, как в c ++.Вот как выглядит моя текущая функция обратного вызова.
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
.