자바 백 엔 드 버튼 이벤트 감청 실현 (등록 시스템 급 단축 키)

4087 단어 자바 구현
시스템 급 단축 키 란 현재 시스템 의 초점 이 어느 프로그램 에 있 든 이 키 를 누 르 면 프로그램 이 이 사건 을 포착 하고 관련 처 리 를 할 수 있 는 단축 키 를 말한다.이 기능 은 응용 프로그램 에서 매우 유용 하 다. 예 를 들 어 시스템 이 자체 적 으로 가지 고 있 는 'win + L' 자동 잠 금 화면, QQ 의 기본 'ctrl + alt + Z' 가 현재 메시지 창 을 자동 으로 여 는 등 이다.자바 의 이벤트 감청 체 제 는 기능 이 강하 지만 시스템 초점 이 프로그램 에서 벗 어 날 때 도 어 쩔 수 없다.
자바 의 최 하층 은 jvm 이기 때문에 단순 한 자바 는 jvm 의 아래 운영 체제 의 상황 을 감지 할 수 없 기 때문에 단순히 자바 를 사용 하면 이 기능 을 완성 할 수 없습니다.
이 기능 을 실현 하려 면 시스템 의 갈고리 함 수 를 호출 해 야 하기 때문에 자바 에서 도 jni 호출 을 통 해 이 루어 져 야 하지만 시스템 함수 나 다른 언어 로 편 성 된 친구 들 에 게 는 어 려 운 문제 입 니 다.예전 에 비슷 한 기능 을 실현 한 것 은 모두 자신 이 c 를 통 해 시스템 의 갈고리 함 수 를 호출 한 다음 에 jni 를 통 해 호출 한 것 이 었 다. 자신 이 쓴 것 은 간단 한 수 요 를 만족 시 키 기만 하면 되 기 때문에 기능 과 프로그램 구조 도 비교적 간단 했다.나중에 외국 의 한 사이트 에서 하나의 구성 요소 인 'jitellitype' 이 우리 에 게 대부분의 기능 을 밀봉 해 주 었 고 구조 적 으로 자바 중의 사건 감청 체 제 를 사용 했다. 우 리 는 프로그램 에서 등록 만 하면 실현 할 수 있다. 다음은 간단 한 예 이다.
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;

public class HotKey implements HotkeyListener {
    static final int KEY_1 = 88;
    static final int KEY_2 = 89;
    static final int KEY_3 = 90;

    /**
     *                 
     *
     * @param key:       
     */
    public void onHotKey(int key) {
        switch (key) {
            case KEY_1:
                System.out.println("ctrl+alt+I   .........");
                break;
            case KEY_2:
                System.out.println("ctrl+alt+O   .........");
                break;
            case KEY_3:
                System.out.println("    ..........");
                destroy();
        }

    }


    /**
     *        
     */
    void destroy() {
        JIntellitype.getInstance().unregisterHotKey(KEY_1);
        JIntellitype.getInstance().unregisterHotKey(KEY_2);
        JIntellitype.getInstance().unregisterHotKey(KEY_3);
        System.exit(0);
    }

    /**
     *             
     */
    void initHotkey() {
        //  KEY_1           ,          ,      0,     ctrl+alt+I
        JIntellitype.getInstance().registerHotKey(KEY_1, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,
                (int) 'I');
        JIntellitype.getInstance().registerHotKey(KEY_2, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,
                (int) 'O');
        JIntellitype.getInstance().registerHotKey(KEY_3, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,
                (int) 'X');

        JIntellitype.getInstance().addHotKeyListener(this);
    }

    public static void main(String[] args) {
        HotKey key = new HotKey();
        key.initHotkey();

        //            
        while (true) {
            try {
                Thread.sleep(10000);
            } catch (Exception ex) {
                break;
            }
        }
    }
}

  
대부분의 기능 을 봉인 해 준 구성 요 소 를 소개 합 니 다. jitellitype 이 고 구조 적 으로 자바 의 이벤트 감청 체 제 를 사용 합 니 다. 우 리 는 프로그램 에서 등록 만 하면 가능 합 니 다.사용 하기 편 하고 간단 합 니 다.
 
체인 을 훔 쳐 봐 도 될 지 모 르 겠 어 요.
여기 눌 러 주세요.
사용 방법:
다운로드 후 압축 패키지 입 니 다. jar 파일 과 dll 파일 이 있 습 니 다. dll 파일 은 System 32 디 렉 터 리 나 시스템 path 환경 변수 에 넣 습 니 다.jar 파일 이 프로젝트 를 가 져 오 면 됩 니 다.
실행 중 이러한 이상 이 발생 하면: Exception in thread "main" java. lang. NoClassDefFoundation Error: org / apache / commons / logging / LogFactory at com. melloware. intellitype. JIntellitype. < clinit > (JIntellitype. java: 57) 
그것 은 jitellitype 이 apache 의 comons - logging 패 키 지 를 사 용 했 기 때 문 입 니 다. 가 져 오지 않 았 다 면 다운로드 해 야 합 니 다.
jar 파일 을 찾 을 수 있 는 사이트

좋은 웹페이지 즐겨찾기