com.sun.jna.Pointer无法强制转换为com.sun.jna.platform.win32.WinDef.LPARAM

时间:2018-04-11 03:50:31

标签: java jna

错误:

  

错误:com.sun.jna.Pointer不能转换为com.sun.jna.platform.win32.WinDef.LPARAM   错误位置:返回User32.INSTANCE.CallNextHookEx(hHook,nCode,wParam,                               keyInfo.getPointer());

代码:

HMODULE hMod = Kernel32.INSTANCE.GetModuleHandle(null);

HOOKPROC lpfn = new LowLevelKeyboardProc()
{
    int count = 1;

    public LRESULT callback(int nCode, WPARAM wParam, KBDLLHOOKSTRUCT keyInfo)
    {
        System.out.println("nCode =" + nCode + ", wParam =" + wParam 
            + ", vkCode=" + keyInfo.vkCode);
        count++;

        if (count > 100)
        {
            quit = true;
        }

        return User32.INSTANCE.CallNextHookEx(hHook, nCode, wParam, keyInfo.getPointer());
    }
};

1 个答案:

答案 0 :(得分:0)

您需要从指针的值手动构建LPARAM,如JNA KeyHook example中所示。

Pointer ptr = keyInfo.getPointer();
long peer = Pointer.nativeValue(ptr);
return User32.INSTANCE.CallNextHookEx(hHook, nCode, wParam, new LParam(peer));
相关问题