Help us understand the problem. What is going on with this article?

Windows のスクリプト言語 AutoHotkey でどんなことができるのかを簡単に紹介する

More than 1 year has passed since last update.

AutoHotkey を使うと Windows をグンと快適にすることができます。どんなことができるかを 4 例ほど、スクリプトとともに端的に紹介します。

はじめに

AutoHotkey を知らない方向けに、簡単に動作イメージを書いておきます。

スクリプトを書いた ahk ファイルを AutoHotkey.exe に食わせると、書いた通りに動作します(常駐します)。AutoHotkey はスクリプト言語ですが、特にキーボード制御機能に長けており、キーのマッピング等は得意とするところです。

では例の紹介に移ります。

(1) 押しづらいショートカットキーに押しやすいキーを割り当てる

タブを切り替えるショートカットキー として Ctrl + (Shift +) Tab がありますが、これは押しづらいです。以下は Alt + ←/→ でも切り替えられるようにする例です。

!Left::Send {Ctrl down}{Shift down}{Tab}{Ctrl up}{Shift up}
!Right::Send {Ctrl down}{Tab}{Ctrl up}

(応用) 特定のアプリケーション内でのみ有効にしたい場合

キー割り当ては指定アプリケーション内でのみ有効にすることもできます。

以下はコマンドプロンプトにおいてのみ Ctrl + V で貼り付けを行う例です。

#IfWinActive ahk_class ConsoleWindowClass
^V::
  Send !{space}
  Send ep
  Return
#IfWinActive

デフォルトでは「Alt + Space、E、P」と押さないと貼り付けできないわけですが、上記により使い慣れた Ctrl + V が使えます。

(2) 邪魔なキー(ScrollLockとか)をロックする

以下は ScrollLock キーと Insert キーを無効にする例です。

ScrollLock::Return
Insert::Return

(応用) 特定のアプリケーション内でのみ有効にしたい場合

以下は「デスクトップ」「Excel」「エクスプローラー」上でのみ F1 キーを無効にする例です。

#If WinActive("ahk_class Progman") || WinActive("ahk_class XLMAIN") || WinActive("ahk_class CabinetWClass")
F1::Return
#If

(3) 任意のキーにアプリケーション起動を割り当てる

よく使うアプリケーションはキー一発で起動させると便利です。

以下は Windows キー + Enter キーでメモ帳を起動する例です。メモを取りたい時にサクっと呼び出せます。

#Enter::Run, c:\windows\notepad.exe

以下は ScrollLock キーで「Firefox で Google を開く」例です。ググりたい時にサクっと呼び出せます。

ScrollLock::Run, "C:\Program Files\Mozilla Firefox\firefox.exe" "https://www.google.co.jp/"

(4) 現在日時を一発で挿入する

以下は d[[ と入力した途端に現在日付(例: 2018/05/31 )を、t[[ と入力した途端に現在時刻(例: 09:46:12) を挿入する例です。

#Hotstring *

::d[[::
  FormatTime, now,, yyyy/MM/dd
  SendInput %now%
return

::t[[::
  FormatTime, now,, HH:mm:ss
  SendInput %now%
return

このような挿入方法を AutoHotkey では ホットストリング と呼びます。一般的には Text Expansion と呼びます。

現在日付に限らず任意の文字列(たとえばよく使う構文やコマンド)を挿入できるので、極めると入力作業をめちゃくちゃ効率化できます。

(応用) 入力モードに依存せず挿入したい場合

上記の例だと全角入力中に 2018・05・31 のようになってしまい、使い勝手が悪いです。以下はこれを防止する例です。

#Hotstring *

::d[[::
  FormatTime, now,, yyyy/MM/dd
  Clipboard = %now%
  Send,^v
return

ただし、この方法では挿入の度にクリップボードを上書きします。

おわりに

以上、簡単ですが 4 例ほど紹介してみました。AutoHotkey は強力ですので、ご興味があればぜひ使ってみてください :smile:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away