2010-08-03 1 views
2

이벤트가 운영 체제로 전파되지 않도록 Java의 시스템 키를 가로채는 방법이 있습니까? Ctrl + Alt + Del 또는 다른 보안 관련 조합은 중요하지 않습니다. 주요 문제는 Windows 키입니다.Java에서 시스템 키 인터셉트/디스 에이블

해당 프로그램은 독점적 인 프로토콜을 통해 일부 원격 작업을 수행하는 전체 화면 응용 프로그램입니다. 현재 나의 유일한 생각은 JNI를 통해 이것을 해결하는 것이지만, Windows 용 솔루션은 간단하지만 리눅스와 MAC OS X에 대해서는 잘 모르겠습니다.

다소 표준적인 솔루션을 선호합니다. Java 게임 등을위한 것입니다.

답변

1

Java는 운영 체제 (OS) 이후 키 스트로크를 처리하므로 Java는이를 "가로 챌 수 없습니다". 그렇지만 C/C++에서 OS 관련 항목을 코딩하여 키 입력을 가로 채고 JNI를 사용하여 Java에서 호출 할 수 있습니다.

0

이것은 fixed in Java 5 인 것처럼 보입니다. 분명히 Java API의 KeyEvent 클래스는 두 개의 Microsoft Windows 키보드 특정 이벤트 (왼쪽 및 오른쪽 윙키의 경우 VK_WINDOWS)와 컨텍스트 메뉴 키의 경우 VK_CONTEXT_MENU을 노출합니다.

KeyListener를 구현하여 이러한 이벤트를 잡아낼 수는 있지만, Winkey 이벤트 만 캡처하려고하면 Java에서 처리하기 전에 먼저 OS의 이벤트 처리기를 트립해야합니다 .