Искам това да се случи:
- Стартирайте моята java програма
- Моята java програма стартира notepad.exe
- Ако напиша буква в бележника, моята Java програма трябва да реагира и да отпечата буквата
Накратко: Възможно ли е да се направи слушател на ключови събития за друг процес? Java програмата няма да има фокус.
Ако е невъзможно, искам да мога да променя фокуса между моя прозорец на Java swing и процеса на бележника. Например:
A) Моята java програма има фокус (малък люлеещ се прозорец), аз въвеждам буквата „A“
B) Notepad получава бързо фокус и буквата A се въвежда там (например с помощта на класа Robot)
C) Моята java програма отново получава фокус
Цитирайки отговора, даден в Създаване на кука за клавиатура за Java програма, която се намира в системната област
така че създаването на кука на клавиатурата не е толкова лесно, колкото изглежда, java не предоставя директен начин за взаимодействие със системните събития за целите на сигурността; тъй като може да доведе до сериозни проблеми по отношение на JVM, системната памет и преносимостта на Java Framework..
имате 4 начина да направите глобални куки за клавиатура:
- Научете JNI / JNA, а аз предпочитам JNA, тъй като е много по-лесно от JNI, и в двата случая ще имате работа с .dll файлове.
- Използвайте JIntellitype, което - както казахте - създава някои проблеми.
- елегантното решение от Сергей Билетников тук http://biletnikov-dev.blogspot.com/2009/09/global-hotkeys-for-java-applications_25.html
- игнорирайте Java и опитайте Autoit V3 (не съм 100% сигурен за това, но мисля, че можете да изпращате сигнали/събития от Autoit към вашето Java приложение, така че Autoit просто ще работи като мост, който улавя глобалните натискания на клавиши)
Отиваме с номер 3, което е добър урок. Ако връзката има 404'd, може би източникът на проекта все още е активен: gigapeta.com/dl/1917618aba749a