LightWeight HotKeyはWindowsの全域で使用できるショートカットキーアプリです。

AutoHotKey より単純な機能だけを提供しますが、GUIを通じて簡単に設定出来ます。

アプリ制作の動機

AutoHotKeyを使って色々なショートカットキーを使いましたが、新しいショートカットキーの登録時や機能変更時にその都度スクリプトのコード変更が不便の為、制作することになりました。

スクリプト作成してAhk2Exeでバイナリー化した後、アンチウイルスのアプリによるミスで探知される事がありました。

提供機能

  • ウィンドウの活性化
    • ウィンドウの検索条件:WindowTitle、ClassName、ProcessName
    • 検索条件: 文字列とRegular Expression
      • ウィンドウの検索のアプリはWinSpyをお勧めします。
  • アプリの実行(整合性レベルを選択可能:相續、低、中、高)
  • ウィンドウのサイズの変更や移動
  • マウスの移動(ターゲットのウィンドウの基準設定可能)
  • キーワードとマウスの入力
  • 画像ファイルとスクリーンとのマッピングを通じてマウスの移動
    • 画像のマッチングにパスする条件
      • (スクリーンと画像ファイルの) DPIが同一である
      • (スクリーンと画像ファイルの) 類似度が9割を超える
  • テキスト入力(ウィンドウズのクリップボード機能を使用するので長文章可能)
  • チェインルールサポート(連続でルールの実行可能)
  • DPIルールサポート(画面のディスプレイの表示倍率による条件)
  • 他プロセスのCListCtrl(SysListView32)のリストアイテムのコーピ
    • 260文字を超えないテキストのみサポート
    • Owner Dataモードはサポートされていない
  • ウィンドウズのトレイアイコンのクリック、ダブルクリック、マウスの移動サポート
    • 表示中のトレイアイコンのみクリック可能
    • 「トレイアイコン」の「クリック」や「ダブルクリック」機能で操作出来ない場合は「エミュレートクリック」機能で操作が可能

AutoHotKeyとの長所と短所の比較

  LightWeight HotKey AutoHotKey
設定難易度 普通 複雑(スクリプトの作成)
多様な機能支援 X(一部のショートカットキー機能だけ) O
GUI O X
Regular Expression O O
実行対象のIntegrity Levelの指定 O X
アンチウイルスによる探知 X(安全) O
ウィンドウズの起動時自動スタート O X
駆動方式 Hook Hook
DLL Injection X X

Demo

  • 次の動画はCtrl+Win+Cを押す時にSysListView32(=CListCtrl)のデータをクリップボードにコピーする機能です。

  • 次の動画はWin+S+Eを押す時にSteamのトレイアイコンをダブルクリックしてSteamアプリをオープンする機能です。

  • 次の動画はWin+F1を押す時に同じ名前のプロセスの他のウィンドウが活性化になる機能です。

要求仕様

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

ベース技術

  • Windows Hook

既知の問題

  • (Hook APIを利用しているので)アンチウイルスでDLLをLight Weight HotKeyプロセスにインジェクションを行って監視する事が多数あり、反応が遅れる事が発生する可能性があります。
    • LightWeight HotKeyはウィンドウズが提供するHook Callbackで(ユーザーが入力したルールのチェックなどの)単純なロジックのみ行われているため、システム性能の低下には全く支障などはありません。
    • 確認されたアンチウイルスのリスト
      • ESET
      • COMODO
      *特にエンタプライズ用のアンチウイルス製品で意味のない強力な検査を行っているため、多数のファイルのロードをしたり作成したりするランサムウェアのような動作をするVisual Studio、Intellij(IDEやCompilerなどの製品)の反応が遅れるのと似たような事が発生します。
  • nProtect GameGuardと衝突(GameGuardアプリの互換性問題)
    • nProtect GameGuardからキーのエミュレーションなどの操作をブロックされたため異常動作する可能性があります。
    • 확인된 앱
      • GranSaga

インストール方法

  1. ダウンロードしたファイルの圧縮を解凍
  2. LWHK.exeの実行
  3. (希望の)ルールの入力
  4. ウィンドウズの起動の時自動スタート使用とする場合
    1. オプションに入る
    2. インストールする

トラブルシューティング

  • HighIntegrity Levelのウィンドウのサイズなど変更出来ない場合
    1. (管理者権限)LWHK.exeの実行
  • システムの性能が(最初起動した時期より)低下になる場合
    • アプリを再起動してアンチウイルスがインジェクションしたDLLを初期化します。
      • アンチウイルスがまたDLLのインジェクションの行動を行うため、時間が進んでからまた反応が遅れる事が発生する可能性があります。
    • または、アンチウイルスアプリでShell Code Injectionなどの監視オプションで「LWHK.exe」プロセスをホワイトリストに登録します。
  • 削除
    1. オプションに入る
    2. アンインストール