有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javacom。太阳jna。无法将指针强制转换为com。太阳jna。站台win32。温迪夫。LPARAM

错误:

error:com.sun.jna.Pointer connot be cast to com.sun.jna.platform.win32.WinDef.LPARAM error location:return 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) 个答案

  1. # 1 楼答案

    您需要根据指针的值手动构造LPARAM,如JNAKeyHook example中所示

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