Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > куда прилепить слушатель чтобы всегда работал


Автор: xber9 12.4.2008, 10:51
Есть  слушатель клавиатуры который обрабаттывает ссочитаниея клавишь
 вопрос к чему его прикрепить чтобы он выполнялся если даже java-приложение  не в фокусе и или свернуто

Автор: powerOn 12.4.2008, 12:40
Цитата(xber9 @  12.4.2008,  11:51 Найти цитируемый пост)
вопрос к чему его прикрепить чтобы он выполнялся если даже java-приложение  не в фокусе и или свернуто 


на Java такого не сделать. Только через JNI.

Автор: xber9 12.4.2008, 13:29
ну а ты не можшь показать как это сделать
ксласс слушателя уже написан на яве 
что делать дальше?

Автор: math64 12.4.2008, 23:07
Можно обойтись без JNI. Написать на С/C++ или найти готовую программу, которая будет ловить нужную комбинацию клавиш и запускать твою Java-программу, а дальше всё можно сделать на Java. 

Автор: powerOn 13.4.2008, 09:04
Цитата(xber9 @  12.4.2008,  14:29 Найти цитируемый пост)
ну а ты не можшь показать как это сделать


http://forum.java.sun.com/thread.jspa?threadID=632369

Автор: xber9 13.4.2008, 12:08
Цитата(powerOn @  13.4.2008,  09:04 Найти цитируемый пост)
Цитата(xber9 @  12.4.2008,  14:29 )
ну а ты не можшь показать как это сделать




ссылка


это яя частично понял
есть пока 2 вопроса

1) как из c++кода  получить dll
2) зачем в приведенном примере  в мэин  функции этот кусок кода
Код

BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
        try{
            br.readLine();
        } catch( IOException ex ) {}



Автор: powerOn 13.4.2008, 18:20
Цитата(xber9 @  13.4.2008,  13:08 Найти цитируемый пост)
зачем в приведенном примере  в мэин  функции этот кусок кода

не проще ли запустить и посмотреть, нежели спросить? это задержка до нажатия Enter в консоли.

Автор: xber9 13.4.2008, 22:03
а как dll сделать?

Автор: powerOn 13.4.2008, 23:04
Цитата(xber9 @  13.4.2008,  23:03 Найти цитируемый пост)
а как dll сделать? 


вопрос не в этот раздел форума. в С/С++ спрашивай.

Автор: xber9 14.4.2008, 08:57
если снова не туда -- прошу прощения
но где взять библиотеку 
#include "jni.h"
 в том примере я что то не понял

Автор: math64 14.4.2008, 09:17
<jdk>/include/jni.h

Автор: xber9 14.4.2008, 21:23
СДЕЛАЛ ВСЕ КАК В ПРИМЕРЕ
http://forum.java.sun.com/thread.jspa?threadID=632369

скомпилил библиотекоу dll   на visual studio 2005
ТОЛЬКО ПРИШЛОСЬ ДОБАВИТЬ ПУСТОЙ stdafx.h  А ТО РУГАЛСЯ
дальше как в примере на писал
    System.loadLibrary("syshook");
он мне в ответ
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: D:\NetBeansProjects\KeyCods\syshook.dll: Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему

что делать

Автор: xber9 15.4.2008, 13:46
 smile  хелп

Автор: ivg 15.4.2008, 21:55
Цитата(xber9 @  14.4.2008,  21:23 Найти цитируемый пост)
что делать

Для начала попробуйте заменить
Код

System.loadLibrary("syshook");

на
Код

System.load("<Полный путь до папки, где лежит>/syshook.dll");

есть подозрение что просто не находит её. Хотя, тогда ошибка должна быть другой. Что за JVM/JRE (версия, производитель)?
Если не сработает, прикрепите вашу dll-ку.

Автор: xber9 16.4.2008, 12:06
вот ошибка опять

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: D:\NetBeansProjects\KeyCods\syshook.dll: Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)

использую jdk 6.1 с оболочкой NetBeans IDE 6.0 RC2

но у меня есть подозрения что я просто не правельно собрал dll (использовал visual studio 2005)  если есть возможность помогите собрать 

мой длл приложен

Автор: xber9 17.4.2008, 17:44
еще раз умоляю помогите 

Автор: ivg 17.4.2008, 20:41
Ваша .dll загружает MSVCR80D.DLL (показывает в depends). У меня на XP в PATH её нет, хотя с вашей dll работает. Видимо есть какие то хитрости. Предполагаю, что у вас именно эту dll-ку не может явно загрузить, поэтому вываливается такая ошибка. Что делать? Я предлагаю избавляться от зависимости от dll MS VC библиотеки времени исполнения. Т. е. код MS VC Runtime должен быть скомпонован статически. Как этого добиться, точно не могу сказать, я исключил из проекта stdafx.h и sdtafx.cpp, без них build отработал. Возможно нужно что то поменять ещё в настройках проекта. Но это лучше вам в форуме для MS VisualC++ спросить, какие настройки поставить, чтобы код библиотеки времени выполнения был скомпонован статически. На всякий случай прикладываю свой вариант dll. У ней нет зависимости от MSVCR80.DLL. Попробуйте с ней запустить, если пойдёт значит моё предположение недалеко от истины.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)