AutoHotkey

**AutoHotkey**とは、Microsoft Windows上で動作するユーティリティソフトウェア、スクリプト言語である。

## 概要
AutoHotkey独自のプログラミング言語(マクロ言語)を用いてコンピュータを制御することができる。「AutoHotkey」という名称から想像できるように、当初はキーボードのホットキー(ショートカットキー)をカスタマイズすることを目的として開発されたが、ユーザーの要望を取り入れる形で開発が進むにつれスクリプト言語と分類されるほどに膨大な機能が実装され、コミュニティも大きなものとなっている。

AutoHotkey v2になってから構文が一新されているため、v1とv2の構文が混在すると部分的に動作しなくなる｡

GPLv2でライセンスされたオープンソースの自由ソフトウェアである。

AutoHotkey自体のソースコードはC++で書かれており、Microsoft Visual Studioでコンパイルすることができる。

## 特徴
変数、関数、ポインタ、再帰、APIコール等一般的なプログラミング言語と同等の機能が用意されており、高度な制御が可能。

基本的な制御は次のようなものがある。

* プログラムの起動、終了
* ウィンドウ表示の制御
* ファイルの開閉
* キー入力の送信
* マウスのクリック、マウスカーソルの移動
* タイマーによる一定間隔での処理

これらを組み合わせて、次のような処理を行わせることができる。

*キー配列を、QWERTY配列からDvorak配列などの配列に再割り当てする
*よく使うファイル名などの文字列をショートカットキーで入力する
*コンテストや無料サンプルの申し込みフォームに、名前や住所などを自動で記入する
*キーボードやジョイスティックでマウスカーソルを操作する
*簡単なキー入力でプログラム、文書、ウェブサイトを開く
** Windowsのコントロールキーを使ったデフォルトのコマンドをEmacs相当のものに上書きする
*電子メールの本文やインターネットコミュニティの書き込みに署名を挿入する
*非アクティブなウィンドウをショートカットキーで操作する
*システムを監視し、不要なプログラムを自動的に終了させる
*、システムスキャン、バックアップの自動実行をスケジュールする
*オンラインゲームでの繰り返し操作を自動化する（オンラインゲームの利用規約に違反することもあるので注意)

GUIを自作しオリジナルのウィンドウを作ることも可能。

### スタンドアロン実行
通常、Autohotkey言語で書かれたスクリプトを実行するには、コンピュータにAutohotkeyがインストールされている必要がある。しかし、付属のコンバートソフトウェアでスクリプトを実行ファイル化することでスクリプトをスタンドアロンで実行することができる。

## スクリプト例
**v2**

以下のスクリプトでは、CtrlキーとAltキーが入れ替わる。


```autohotkey
LCtrl::Alt
LAlt::Ctrl
```


以下のスクリプトでは、Googleで特定の語や文字列を検索することができる。任意のアプリケーションで文字列をクリップボードにコピーした後に  を押すと、指定されている既定のウェブブラウザが起動し、コピーした文字列で検索が行われる。この操作を行うキーは、スクリプトを変更すれば変更可能。


```autohotkey
#g:: { ; Win+g
   Run "https://www.google.com/search?q=" A_Clipboard
}
```


「afaik」と入力すると自動的に「as far as I know」に置き換わるホットストリングの作成に必要なスクリプトの例を以下に示す。


```autohotkey
::afaik::as far as I know
```


AutoHotkeyの簡単な機能の例を以下に示す。あるURLがクリップボードにコピーされているときに  を押すと、URLにかっこが含まれているかを確認し、あれば代替文字に置き換え、その後クリップボードからURLを貼り付ける。


```autohotkey
!x:: { ; Alt+x
   URLReplace()
   Send "^v" ; Ctrl+v
}

URLReplace() {
   A_Clipboard := StrReplace(A_Clipboard, "(", "%28")
   A_Clipboard := StrReplace(A_Clipboard, ")", "%29")
}
```


## コミュニティ
2012年1月現在、AutoHotkeyのオンラインコミュニティには約27,300ユーザーが登録されており、約482,000の書き込みが投稿されている。

AutoHotkey用のオンラインチャットルームはFreenode IRCに設置されており、2009年11月現在で平均40ユーザーが接続している。

## ユーザ提供機能
他のプログラミング言語から、または他のプログラミング言語と一緒に使用する以下の拡張機能、相互運用できるプログラム、埋め込みスクリプトライブラリが使用可能であるか、開発中である。

*.NET Framework – VB/C# (.NET)
*LibLua – Lua
*Lisp on win32 – LISP
*Embeddable Common Lisp – 
*Windows Scripting Host – VBScript/JScript
*Embedded machine code – 機械語

他にも以下がある。

*アスペクト指向プログラミング
**Function Hooks
*COM Wrappers – COM
*Dynamic Code Generation
*Human Interface Device(HID) Support – HID
*Internet Explorer Automation
*SmartGUI Creator
*Sparrow AHK Web Server
*
**Bit Wizardry
*Windows Event Hooks

## 歴史

### 開発史
AutoHotkeyの最初のベータ版は2003年11月10日に公開された。AutoHotkeyを開発する契機としては、開発者のChris Mallettが「ショートカットキー機能のサポートをAutoIt v2に組み込みたい」という提案をしたものの、AutoItのコミュニティで反応がなかったことがある。そのためChris Mallettは、AutoIt v2の構文を土台としつつもAutoIt v3から一部のコマンドを流用し、AutoIt v3でコンパイルした、独自のプログラムをいちから作成しはじめた。その後AutoIt v3は、「『AutoItのソースコードを繰り返し取得』し、『自分自身をAutoItの競合相手にしている』プロジェクトが他に存在する」という理由によりGNU General Public Licenseからプロプライエタリソフトウェアに移行した。

2010年10月10日、Chris Mallettは、AutoHotkey_LをAutoHotkeyとして継続して開発していくことにしたこと、公式ウェブサイトの「Download AutoHotkey」からダウンロードできるプログラムをAutoHotkey_Lに変更することを宣言した。また、AutoHotkeyコミュニティ内のプログラマーたちも、AutoHotkeyの派生版のAutohotkey_L, Basic, v2.0を開発し始めた。

2014年4月24日、非営利組織のAutoHotkey Foundation LLCを設立。

### AutoHotkey v2

* 2021年7月24日、AutoHotkey v2の最初のベータ版が公開された。 2022年11月20日にはrc版が公開され、同じ年の後半に v2.0.0としてリリースすることが計画された。

* 2022年12月20日、AutoHotkey v2.0.0が正式リリースされた。 2023年1月22日、AutoHotkey v2が正式版とみなされ、v1は非推奨バージョンとなった。2024年3月16日に、AutoHotkey v1の最終アップデートがリリースされ、v1はサポート終了となった。

### その他の事件
* 2019年4月ごろ、AutoHotkeyを組み込んだマルウェアが発見された。 このウィルスは正規のAutoHotkeyスクリプトエンジンを含み、感染すると攻撃者が記述したAutoHotkeyのスクリプトをダウンロード、実行し、遠隔操作されてしまう。

## 脚注

## 関連項目

* UWSC
* AutoIt
* Automator （Macintosh上で動作する操作自動化ソフトウェア）
* Vimperator

* iMacros

## 外部リンク
*