LightWeight HotKey 는 윈도우용 단축키 프로그램입니다.

AutoHotKey 보다는 단순한 기능만을 제공하지만, GUI를 통해 간단하게 설정할 수 있습니다.

App 제작 동기

AutoHotKey 를 사용하여 여러가지 단축키를 등록하여 사용하였으나, 새 단축키 등록이나 기능 변경시 매번 스크립트를 작성해야하는 번거로움이 있어서 제작하게 되었습니다.

스크립트 작성 후 Ahk2Exe 를 이용하여 Binary로 제작 후에는, Anti-Virus 프로그램에서 오탐을 하는 경우도 있었습니다.

지원 기능

  • 창 활성화
    • 창 찾기 조건: WindowTitle, ClassName, ProcessName 지원
    • 찾기 조건: 문자열 및 Regular Expression 지원
      • 창 찾기 툴은 WinSpy 를 권장합니다.
  • 앱 실행 (무결성 수준 선택 가능: 현재 상속, 높은 권한, 보통, 낮음)
  • 창 크기 변경 및 이동
  • 마우스 이동 (대상 창 기준으로 가능)
  • 키보드 마우스 입력
  • 이미지 매핑을 통한 마우스 이동
    • 단, 아래 조건을 충족해야 함
      • (스크린과 이미지의) DPI 가 같아야 함
      • (스크린과 이미지의) 유사도가 90% 이상이어야 함
  • 텍스트 입력 (클립보드 사용, 장문 가능)
  • ChainRule 지원(다른 규칙을 연결해서 사용 가능)
  • DPI 조건: 화면 배율 조건 지원
  • (다른 프로세스의) CListCtrl(SysListView32) 아이템 복사
    • 단, 260자를 초과하는 아이템 복사 불가능
    • Owner Data 를 사용하는 경우 복사 불가능
  • Windows의 TrayIcon(Shell_TrayWnd)의 아이콘 클릭/더블클릭, 마우스 이동 지원
    • 현재는 숨겨진 아이콘은 지원하지 않음
    • Click, Double Click 이 동작하지 않는 경우, Emulate Click, Emulate Double Click 기능으로 대체 가능

AutoHotKey와의 장단점 비교

  LightWeight HotKey AutoHotKey
설정 난이도 보통 어려움 (스크립트 작성)
다양한 기능 지원 X (일부 단축키 기능만 지원) O
GUI O X
정규표현식 지원 O O
실행 대상 Integrity Level 지정 O X
Anti-Virus 탐지 X (안전) O
윈도우 시작 시 스케쥴 등록 O X
구동 방식 Hook Hook
DLL Injection X X

Demo

  • 아래 영상은 Ctrl + Win + C 를 누르면, SysListView32(=CListCtrl)의 목록을 클립보드에 복사하는 기능입니다.

  • 아래 영상은 Win + S + E 를 누르면, 우측 하단의 "Steam" TrayIcon을 클릭하여 창을 활성화 하는 기능입니다.

  • 아래 영상은 Win + F1 을 누르면, 같은 프로세스의 다른 창이 활성화 되는 기능입니다.

요구 사양

  • Windows 10, 11
  • 64bit (AMD64)
  • Visual C++ Runtime (2015-2022)
  • DirectX 9.0 or above

기반 기술

  • Windows Hook

알려진 문제

  • (Hook API 를 사용하기 때문에) Anti-Virus 에서 자신들의 DLL 을 Injection 하여 감시하는 경우가 다수 있고, 성능 저하가 발생할 수 있습니다.
    • LightWeight HotKey 는 Windows 가 제공하는 Hook Callback에서 (사용자가 입력한 Rule 체크 등의) 단순한 작업만을 진행하기 때문에, 시스템 성능을 저하시킬 이유가 없습니다.
    • 확인된 Anti-Virus 제품
      • ESET
      • COMODO
      *특히 Enterprise용 Anti-Virus 제품에서 의미 없는 강력한 검사를 수행하기 때문에, 다수의 파일을 읽거나, 생성하는 랜섬웨어같은 동작을 하는 Visual Studio, Intellij 등의 IDE 및 Compiler 제품이 느려지는 것과 유사한 케이스라고 볼 수 있습니다.
  • nProtect GameGuard 와 충돌
    • nProtect GameGuard에서 Key Emulation 등의 동작을 차단하기 때문에 비정상 동작할 수 있습니다.
    • 확인된 앱
      • GranSaga

설치 방법

  1. 다운로드 한 파일의 압축 해제
  2. LWHK.exe 실행
  3. (원하는) 규칙 입력
  4. 윈도우 시작시 자동으로 실행되기를 원하는 경우
    1. Options 진입
    2. Install 실행

문제 해결

  • HighIntegrity Level 의 앱에서 동작하지 않는 경우
    1. (관리자 권한으로) LWHK.exe 실행
  • 앱이 느려지거나, (처음 사용시 보다)윈도우에서 성능이 저하되는 경우
    • 앱을 재시작하여 Anti-Virus 가 주입한 DLL 을 초기화 합니다.
      • Anti-Virus 가 다시 DLL을 주입하기 때문에, 시간이 경과되면 또 느려질 수 있습니다.
    • 또는, Anti-Virus 에서 Shell Code Injection 등의 감시에서 LWHK.exe 프로세스를 제외합니다.
  • 삭제
    1. Options 진입
    2. Uninstall 실행