Я использую JNA и мне нужно использовать функцию MapVirtualKeyEx.
Вот подпись:
UINT WINAPI MapVirtualKeyEx(
__in UINT uCode,
__in UINT uMapType,
__inout_opt HKL dwhkl
);
Более подробную информацию о подписи можно найти здесь: http://msdn.microsoft.com/en-us/library/ms646307(v=vs.85).aspx
Я пробовал это:
int MapVirtualKeyEx (int uCode, int nMapType, int dwhkl);
но это не совпадало. У меня такое чувство, что именно _inout_opt
вызывает проблему.
Я получаю ошибку: The specified procedure could not be found.
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?