13/05/05 12:47:38.90 QdZjR4QB0
■配布元
URLリンク(www.autohotkey.com)
本家Autohotkeyは事実上開発停止で、派生のAutoHotkey_L(AHKL)が主流。
新規利用者には日本語の扱いで不具合の無いAHKLのユニコード版の利用を推奨。
■前スレ
AutoHotkey スレッド part14
スレリンク(software板)
■日本語解説等
AutoHotkey Wik
URLリンク(ahkwiki.net)<) (不調時は URLリンク(hdd.s300.xrea.com) )
AutoHotkeyJp(過去ログdatあり)
URLリンク(sites.google.com)
Autohotkey日本語ヘルプ(chmファイル)
URLリンク(www6.atwiki.jp)
Autohotkey専用うpろだ
URLリンク(ux.getuploader.com)
簡易スクリプト掲示板
URLリンク(pastebin.com)
URLリンク(www.autohotkey.net) ※31日で削除されます。
■派生版
IronAhk (.NET製、クロスプラットフォーム)
URLリンク(www.ironahk.net)
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
URLリンク(www.autohotkey.net)
テンプレ>>2-10
2:名無しさん@お腹いっぱい。
13/05/05 12:48:51.58 QdZjR4QB0
■重要事項
オリジナルである、本家 "AutoHotKey" の開発は終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流。
スクリプトについては、それが本家AHKで動くものであるか、Lであるのかに注意。
AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
URLリンク(www.autohotkey.net)
オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
→URLリンク(www.autohotkey.net)
→URLリンク(sites.google.com)
※ 新規利用者にはAHKLを推奨するが、移行に際してすくなからずの改修が必要となる。
特に、旧流行らせるページの配布物(MouseGesture等)の多くはそのままでは動作しない。
安定利用できている環境を崩して移行するかどうかは各人の判断による。
MouseGestureについては有志の方がAHKL対応版を配布しているのでそれを利用するのもありです。
URLリンク(code.google.com)
■質問に際して
OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。
また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。
2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
3:名無しさん@お腹いっぱい。
13/05/05 12:50:34.80 QdZjR4QB0
■過去スレ
①スレリンク(software板) ②スレリンク(software板)
③スレリンク(software板) ④スレリンク(software板)
⑤スレリンク(software板) ⑥スレリンク(software板)
⑦スレリンク(software板) ⑧スレリンク(software板)
⑨スレリンク(software板) ⑩スレリンク(software板)
⑪スレリンク(software板) ⑫スレリンク(software板)
⑬スレリンク(software板) ⑭スレリンク(software板)
⑮スレリンク(software板)
以下FAQ等
■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHKLの場合)
Q2:初めて使うけどどれを使えばいいの?
A2:AHKLのユニコード版を推奨。
旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。
64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
4:名無しさん@お腹いっぱい。
13/05/05 12:52:02.66 QdZjR4QB0
■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理です。
レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。( URLリンク(www.forest.impress.co.jp) )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」,該当するキーは「該当なし」と表示される。(0x0064はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると「~ 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。「登録」をクリックし、Windowsを再起動する。
Q2:「^1::Esc」とリマップ定義したけど [Ctrl]+[1] を押したらスタートメニューが出ちゃうけどどうすればいいの?
A2:リマップは修飾キー(Ctrl,Shift,Alt,Win)の押下状態を引き継いでキー発行するので、[Ctrl]+[Esc] がキー送信されるため。
これを避けるには、「Send」コマンドを利用して明示的に修飾キーなしのキーを発行をすればよい。
^1::Send, {Esc}
Q3:[Shift], [Ctrl], [Alt], [Win]以外を修飾キーとしてキー割り当てしたいよ
A3:コンビネーションキーの機能で実現ができる。
例) 無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたい場合は以下のように記述する。
sc07B & I::Send, {Blind}{Up}
sc07B & K::Send, {Blind}{Down}
sc07B & J::Send, {Blind}{Left}
sc07B & L::Send, {Blind}{Right}
5:名無しさん@お腹いっぱい。
13/05/05 12:54:00.03 QdZjR4QB0
Q4:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A4:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」
#UseHookで全部にキーボードフックを適応する方法でも可。
Q5:キーリマップを使うとキー押下中に連打するけど、マウスボタンの場合は連打しない…
A5:マウスはキーリピートしないので、Loopなどを使って自前でリピートさせてください。
Q6:ジョイスティックのリマップがうまくいきません!!助けて
A6:ジョイスティックではリマップできない。「Send」コマンドでキー発行する必要がある。
× Joy1::Esc
○ Joy1::Send, {Esc}
Q7:ジョイスティックの上下左右に割り当てたいけど、JoyLeft,JoyUpってホットキーは無いの?
A7:無い。AHKのジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。
6:名無しさん@お腹いっぱい。
13/05/05 12:56:57.30 QdZjR4QB0
Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
○AHKが原因の場合
AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
例) ^W::Send, {w 30}
これを回避するためには、以下の方法をとればよい:
・キー押下状態を常に監視するキーボードフックを導入する(#InstallKeybdHook)
・キー発効のコマンドを SendInput, SendPlay にする(SendModeで一括指定でもよい)
・上記二つが出来ない場合は、SetKeyDelay, 0 等としてキー発効をなるべく早く行うか、
#HotkeyModifierTimeout で修飾キー押下のタイムアウト値を長めに設定をする。
なお、他のキー発効を行うツール(クリップボードユーティリティやマウスジェスチャツールなど)が、
発効する修飾キーが原因となる場合もあるが、フックの導入でほぼ解決出来ると思われる。
○AHK以外が原因の場合:
環境により異なるので何とも言えないが、以下のような環境の場合発生する事が報告されている。
・ Logicool(Logitec)のマウスユーティリティSetPoint(verによっては問題ない事もあるとか)
・VirtualPC, WMWare, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:URLリンク(www6.atwiki.jp) の「IME.ahk」を使いましょう。
7:名無しさん@お腹いっぱい。
13/05/05 12:57:39.65 QdZjR4QB0
Q2:IMEが現在文字を入力している、または変換中であるかどうかを得ることはできる?
A2:↑のIME.ahkで一部可能(IEやFirefox,MS-Wordのようにインライン化しているアプリでは無理)
■ その他
Q1:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A1:意味としては違いは無い。単体では、コマンド形式(共に前者)の方が「式」形式(同後者)より*少し*速い。
複数条件の場合、IfのネストよりはAND(&&)条件で「式」を並べた方が速い。
が、バッチでかなりの回数(数万↑~)回したりする場合以外は、体感出来るほどの差はない。
Q2:テキストエディタでキーワードの色づけなどをしたいんだけど。
A2:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり
Q3:GUI作るのめんどくせ~~
A3:公式( URLリンク(www.autohotkey.com) )から SmartGUI Creator をDLして使うと楽。
Q4:AHKってマルチスレッドじゃないの?
タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。
MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。
> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド →→→→→→……………………………………→→→→
> ★割込 ↑再開
> 割り込みスレ →→→→…………→→→→→→END
> ◆割込 ↑再開
> 更に割り込み →→→END
※ AutoHotkey_H(AutoHotkey.dll)を利用すると真のマルチスレッドが利用可。
8:名無しさん@お腹いっぱい。
13/05/05 12:58:51.34 QdZjR4QB0
Q5:AHK、AHKLx86、AHKLx64の共存は出来る?
A5:それぞれを違うフォルダ(ディレクトリ)にインストールすれば共存できます。
但し、インストーラーを使って最後にインストールしたAutohotkey(Normal or x86 or x64)
に対してahkファイルの関連付けが行われますので、レジストリエディタ(Regedit.exe)や
FileTypesMan等のツールを使って関連付を変更してください。
ahkファイルをAHK Normal、ahlファイルをAHKLx86、ah6ファイルをAHKLx64といったように
別々の拡張子に関連付けが可能です。
それぞれに関連付けしたファイルに対してドラッグアンドドロップを有効にするにはレジストリの
[HKEY_CLASSES_ROOT\ファイルタイプの名前\ShellEx\DropHandler]
の (規定) のデータを {86C86720-42A0-1069-A2E8-08002B30309D} にする。
9:名無しさん@お腹いっぱい。
13/05/06 08:35:17.27 rnk4I97w0
>>1 乙
前スレはこれね。
AutoHotkey スレッド part15
スレリンク(software板)
10:名無しさん@お腹いっぱい。
13/05/06 12:31:03.64 67MLjgt/0
>>1
AutoHotkey.dllが404だしもう開発してなさそうやね
次から削ったほうがいいかも
11:名無しさん@お腹いっぱい。
13/05/06 14:12:04.77 iL+HEkij0
>>10
AutoHotkey.dll
URLリンク(www.autohotkey.net)
AutoHotkey_H
URLリンク(www.autohotkey.net)
AutoHotkey_H needs to be installed manually.
AutoHotkey.exe
AutoHotkey.dll
AutoHotkeySC.bin
AutoHotkeyMini.dll
AutoHotkey Version 1.1 2013/04/19
AutoHotkey2 Alpha 2013/04/19
> AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など)
AutoHotkey_H was invented by tinku99 and enhanced by HotKeyIt. It is a custom build of AutoHotkey_L (URLリンク(l.autohotkey.net) by Lexikos)
AHK_H includes all AHK_L features and some new features as well.
12:名無しさん@お腹いっぱい。
13/05/06 14:22:15.54 /9iowbRk0
AHKportableは採用外?
13:名無しさん@お腹いっぱい。
13/05/07 01:57:16.17 LATw00FG0
今autohotkeyもどきを描いてて
スクリプト(ユーザーが書く部分)を scala によって scala または java のコードに自動変換してそれをコンパイルするというフローで進めてるんですが
ベターな案ってあります?
14:名無しさん@お腹いっぱい。
13/05/07 02:37:05.60 jBOWI75r0
>>13
スクリプトを直接コンパイル
15:名無しさん@お腹いっぱい。
13/05/07 02:40:39.11 T62Z+97Q0
>>14
コンパイラそのものを書くことになり大変なので勘弁
16:980
13/05/07 05:15:59.39 IV6ZnMW00
前スレの>>980です。コード貼ってくれた方ありがとうございましたー
貼られたのを元にいろいろ見てたのですが、やっぱ自分にはできそうもないので一旦諦めます><
このソフトが自由自在に使える人が羨ましいですほんと・・・
17:名無しさん@お腹いっぱい。
13/05/07 06:04:06.83 jBOWI75r0
>>15
コンパイラが用意されてる言語をスクリプトとして利用する。
追加機能はプリプロセッサで処理。
プリプロセッサを作るだけならそんな大変でもない。
18:名無しさん@お腹いっぱい。
13/05/07 12:30:48.36 LATw00FG0
>>17
そうですね
プリプロセッサみたいなものを作る方向なんです
そのものになるかはちょっと微妙ですが
19:AHK_another (仮称) 開発者
13/05/07 20:59:21.60 LATw00FG0
AHKをつくるにあたって
こういうところがAHKを使っていて不足、みたいなところがあったら聞かせていただけないでしょうか?
今考えていることの一つは if文で } の位置 を行末におけるとか 一文にに命令かけるとか、普通のプログラミング言語っぽくしたほうが使いやすいかな、というところです
20:名無しさん@お腹いっぱい。
13/05/07 21:06:33.47 bTm3l9Co0
一行いいね
いっそ全部JavaScript互換で