2012-01-17 4 views
0

Я пытаюсь создать крючок клавиатуры для использования в Java. После некоторых исследований я понял, что мне понадобятся некоторые вещи из C++. У меня нет большого опыта работы с C++, я немного перепутал с синтаксисом. Как мне это сделать на C++? И как я могу заставить код C++ взаимодействовать с кодом Java? Любая помощь приветствуется.C++/Java - Keyboard Hook

+1

Там уже много информации, которая отвечает на этот самый вопрос, многое из этого на этом сайте. Вы намного лучше читаете на нем, а затем возвращаетесь, если у вас есть * конкретный вопрос. Это не требует C++, но может быть выполнено с C и JNA, но вам нужно знать, как кодировать на C, если вам нужно. –

+0

Для Windows см. [JNA Keyboard hook on Windows] (http://stackoverflow.com/questions/3078646/jna-keyboard-hook-in-windows) или [KeyHook.java] (https://github.com/ twall/jna/blob/master/contrib/w32keyhook/src/KeyHook.java) от JNA contrib – prunge

ответ

1

Я не совсем уверен, что вы хотите для C++ кода, но вот как бы заставить его работать с Java:

Посмотрите в JNI, он будет объяснить, как выполнить машинный код с помощью Java

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jni.html

По существу, вы используете инструмент для создания заголовков клея, которые вы включаете в свое приложение на C++. Java-код будет автоматически вызывать родную библиотеку при вызове функции native.

Также имейте в виду, что существует ограничение скорости для перехода от нативного к слову java.

+0

JNA намного проще в использовании, чем JNI для такого рода проблем. –

+0

У меня нет большого опыта работы с JNA, было бы полезно, если бы вы отправили ответ, тогда я думаю – Prime

+1

JNA - это библиотека, которая построена на JNI и позволяет программам Java напрямую взаимодействовать с C dll без необходимо создать файлы заголовков. Я бы опубликовал это как ответ, если бы думал, что его вопрос будет подвешен, но это не так. Все, что я могу сделать, это сделать общие предложения по этому слишком широкому вопросу. Я думаю, что ОП должен сначала выполнить свою работу на дому и выполнить должную осмотрительность, прежде чем он сможет даже рассмотреть вопрос о приближении этой темы. –