找不到指定的过程(MapVirtualKeyx)JNA(Java)
我正在使用JNA,需要使用MapVirtualKeyx函数 签名如下:找不到指定的过程(MapVirtualKeyx)JNA(Java),java,windows,api,java-native-interface,jna,Java,Windows,Api,Java Native Interface,Jna,我正在使用JNA,需要使用MapVirtualKeyx函数 签名如下: UINT WINAPI MapVirtualKeyEx( __in UINT uCode, __in UINT uMapType, __inout_opt HKL dwhkl ); 有关签名的更多信息可在此处找到: 我试过这个: int MapVirtualKeyEx (int uCode, int nMapType, int dwhkl);
UINT WINAPI MapVirtualKeyEx(
__in UINT uCode,
__in UINT uMapType,
__inout_opt HKL dwhkl
);
有关签名的更多信息可在此处找到:
我试过这个:
int MapVirtualKeyEx (int uCode, int nMapType, int dwhkl);
但它不匹配。我感觉是\u inout\u opt
引起了问题
我得到的错误是:找不到指定的过程。
static interface User32 extends Library {
public static User32 INSTANCE = (User32) Native.loadLibrary("User32",
User32.class);
int MapVirtualKeyEx (int uCode, int nMapType, int dwhkl);
}
private static void test(int keyCode)
{
int code = User32.INSTANCE.MapVirtualKeyEx(key, MAPVK_VK_TO_VSC,
134809609); //The number is the keyboard ID, it's temporary.
}
我还有另一个问题:是否有某种自动转换API签名的方法,以便在JNI/JNA中使用它?对于既是输入参数又是输出参数的参数,您需要使用一种JNA引用类型。如果HKL确实是int,请使用IntByReference。如果它是一个结构,则需要定义相应的结构
至于你的另一个问题,试试。因为MapVirtualKeyx()处理字符,所以它有一个ANSI和更广泛的版本。因此,该函数是mapVirtualKeyXA()/mapVirtualKeyXW(),具体取决于您要使用的函数。注意:我已经阅读了这篇文章和其他几篇文章,但都没有帮助。我已经搜索了很长时间,找不到HKL的含义。谢谢你的帮助+1.