1 名前:名無しさん@お腹いっぱい。 [2013/05/05(日) 12:47:38.90 ID:QdZjR4QB0] ■配布元 www.autohotkey.com/ 本家Autohotkeyは事実上開発停止で、派生のAutoHotkey_L(AHKL)が主流。 新規利用者には日本語の扱いで不具合の無いAHKLのユニコード版の利用を推奨。 ■前スレ AutoHotkey スレッド part14 anago.2ch.net/test/read.cgi/software/1333372506/ ■日本語解説等 AutoHotkey Wik ahkwiki.net AutoHotkeyを流行らせるページ(ミラー) ahk.xrea.jp/ (不調時は hdd.s300.xrea.com/ahk/ ) AutoHotkeyJp(過去ログdatあり) sites.google.com/site/autohotkeyjp/ Autohotkey日本語ヘルプ(chmファイル) www6.atwiki.jp/eamat/ Autohotkey専用うpろだ ux.getuploader.com/autohotkeyl/ 簡易スクリプト掲示板 pastebin.com/ www.autohotkey.net/paste/ ※31日で削除されます。 ■派生版 IronAhk (.NET製、クロスプラットフォーム) www.ironahk.net/ AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生) www.autohotkey.net/~tinku99/ahkdll/ テンプレ>>2-10
2 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:48:51.58 ID:QdZjR4QB0] ■重要事項 オリジナルである、本家 "AutoHotKey" の開発は終了している。 現在は、そこからフォークした "AutoHotkey_L" が主流。 スクリプトについては、それが本家AHKで動くものであるか、Lであるのかに注意。 AutoHotkey_L (内部Unicode、64bitバイナリ、オブジェクト指向、COM対応など) www.autohotkey.net/~Lexikos/AutoHotkey_L/ オリジナルのAHKとの変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。 →www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/ →sites.google.com/site/autohotkeyjp/reference/AutoHotkey_L/index ※ 新規利用者にはAHKLを推奨するが、移行に際してすくなからずの改修が必要となる。 特に、旧流行らせるページの配布物(MouseGesture等)の多くはそのままでは動作しない。 安定利用できている環境を崩して移行するかどうかは各人の判断による。 MouseGestureについては有志の方がAHKL対応版を配布しているのでそれを利用するのもありです。 code.google.com/p/mousegesturel/ ■質問に際して OSの種類(XP/Vista/7)や32/64ビット版の違い、利用するAutoHotkeyのバージョンを明記すること。 また、操作したいソフト・やりたい処理などは具体的に書いた方がレスが付きやすい傾向にある。 2chの仕様の関係で、このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、 レスをコピペして利用する場合は行頭の全角スペースをタブ等に置換してから利用すること。
3 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:50:34.80 ID:QdZjR4QB0] ■過去スレ @pc7.2ch.net/test/read.cgi/software/1098531338/ Attp://pc7.2ch.net/test/read.cgi/software/1129836713/ Bttp://pc11.2ch.net/test/read.cgi/software/1157043396/ Cttp://pc11.2ch.net/test/read.cgi/software/1184556627/ Dttp://pc11.2ch.net/test/read.cgi/software/1201502896/ Ettp://pc11.2ch.net/test/read.cgi/software/1219130051/ Fttp://pc12.2ch.net/test/read.cgi/software/1230694774/ Gttp://pc12.2ch.net/test/read.cgi/software/1243005818/ pc12.2ch.net/test/read.cgi/software/1253888736/ Ittp://pc12.2ch.net/test/read.cgi/software/1265518996/ Jttp://hibari.2ch.net/test/read.cgi/software/1280482227/ Kttp://hibari.2ch.net/test/read.cgi/software/1296446228/ Lttp://anago.2ch.net/test/read.cgi/software/1317156599/ Manago.2ch.net/test/read.cgi/software/1333372506/ Nanago.2ch.net/test/read.cgi/software/1349735581/ 以下FAQ等 ■実行環境 Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど... A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHKLの場合) Q2:初めて使うけどどれを使えばいいの? A2:AHKLのユニコード版を推奨。 旧流行らせるページの配布物をそのまま使う場合は本家をそのまま利用する事。 64ビットOSでAHKL32ビット版の使用は制約が多いので、64ビット版を強く推奨。
4 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:52:02.66 ID:QdZjR4QB0] ■ リマップ・ホットキー割り当て Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。 OS側がキーUp/Down情報が正しく返してこないのでAHKのみで対処は無理です。 レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。 例) ChangeKeyを使って[ひらがな]を[F13]にする AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。 F12::F13 Changekeyを起動する。( ttp://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html ) 「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。 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 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:54:00.03 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:56:57.30 ID: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:www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。
7 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:57:39.65 ID: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:公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使うと楽。 Q4:AHKってマルチスレッドじゃないの? タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。 A4:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。 MsgBox、WinWait、KeyWait、Process,WaitClose などをタイマーで複数動かす時は注意。 > 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。 > → 実行中、 …:割り込み終了待ち > 元スレッド →→→→→→……………………………………→→→→ > ★割込 ↑再開 > 割り込みスレ →→→→…………→→→→→→END > ◆割込 ↑再開 > 更に割り込み →→→END ※ AutoHotkey_H(AutoHotkey.dll)を利用すると真のマルチスレッドが利用可。
8 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/05(日) 12:58:51.34 ID: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 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/06(月) 08:35:17.27 ID:rnk4I97w0] >>1 乙 前スレはこれね。 AutoHotkey スレッド part15 anago.2ch.net/test/read.cgi/software/1349735581/
10 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/06(月) 12:31:03.64 ID:67MLjgt/0] >>1 AutoHotkey.dllが404だしもう開発してなさそうやね 次から削ったほうがいいかも
11 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/06(月) 14:12:04.77 ID:iL+HEkij0] >>10 AutoHotkey.dll ttp://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-dll-txt.html AutoHotkey_H ttp://www.autohotkey.net/~HotKeyIt/AutoHotkey/files/AutoHotkey-txt.html 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 (ttp://l.autohotkey.net/ by Lexikos) AHK_H includes all AHK_L features and some new features as well.
12 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/06(月) 14:22:15.54 ID:/9iowbRk0] AHKportableは採用外?
13 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/07(火) 01:57:16.17 ID:LATw00FG0] 今autohotkeyもどきを描いてて スクリプト(ユーザーが書く部分)を scala によって scala または java のコードに自動変換してそれをコンパイルするというフローで進めてるんですが ベターな案ってあります?
14 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/07(火) 02:37:05.60 ID:jBOWI75r0] >>13 スクリプトを直接コンパイル
15 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/07(火) 02:40:39.11 ID:T62Z+97Q0] >>14 コンパイラそのものを書くことになり大変なので勘弁
16 名前:980 mailto:sage [2013/05/07(火) 05:15:59.39 ID:IV6ZnMW00] 前スレの>>980 です。コード貼ってくれた方ありがとうございましたー 貼られたのを元にいろいろ見てたのですが、やっぱ自分にはできそうもないので一旦諦めます>< このソフトが自由自在に使える人が羨ましいですほんと・・・
17 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/07(火) 06:04:06.83 ID:jBOWI75r0] >>15 コンパイラが用意されてる言語をスクリプトとして利用する。 追加機能はプリプロセッサで処理。 プリプロセッサを作るだけならそんな大変でもない。
18 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/07(火) 12:30:48.36 ID:LATw00FG0] >>17 そうですね プリプロセッサみたいなものを作る方向なんです そのものになるかはちょっと微妙ですが
19 名前:AHK_another (仮称) 開発者 mailto:sage [2013/05/07(火) 20:59:21.60 ID:LATw00FG0] AHKをつくるにあたって こういうところがAHKを使っていて不足、みたいなところがあったら聞かせていただけないでしょうか? 今考えていることの一つは if文で } の位置 を行末におけるとか 一文にに命令かけるとか、普通のプログラミング言語っぽくしたほうが使いやすいかな、というところです
20 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/05/07(火) 21:06:33.47 ID:bTm3l9Co0] 一行いいね いっそ全部JavaScript互換で