■ リマップ・ホットキー割り当て
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}
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ではできない。
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, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている Q10:マルチタッチとかのカスタマイズは出来ないの? A10:今のところ通常のキーボードとマウスのカスタマイズしかできません・・・
■ IME関連
Q1:IMEのOn/Offの切り替えや、状態を得るにはどうすればいいの?
A1:
http://www6.atwiki.jp/eamat/pages/17.html の「IME.ahk」を使いましょう。
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)を利用すると真のマルチスレッドが利用可。
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} にする。
むこうが1日以上早いしね できれば継続スレ立てる時は板を検索してからにしましょう
>>3 は訂正無しなので
>>4 の訂正版です
■ リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
A1:OSのローカライズ段階で発生してる問題なので日本語環境だとLock系キーの動作は不定。
OS側がキーUp/Down情報を正しく返してこないのでAHKのみで対処は無理です。
レジストリ変更等で別キーへ再配置を行い、AHKで割り当てを行うという二段構えが必要。
例) ChangeKeyを使って[ひらがな]を[F13]にする
AutoHotkeyで任意のキーをF13にリマップする(例えばF12をF13にリマップし、スクリプトを実行)。
F12::F13
Changekeyを起動する。(
http://www.forest.impress.co.jp/lib/sys/hardcust/keyboard/changekey.html )
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード(0x0064はF13)が表示されるので覚えておき「終了」をクリック。
「ひらがな」キーをクリックすると「【ひらがな】キーをどのキーに変更しますか?」という
ウィンドウが表示されるので右上の「Scan code」をクリック。
覚えておいたスキャンコード(0064)を入力し、「OK」ボタンをクリック。
「登録」をクリックし、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-8 は変更点無し。
以上、テンプレ訂正終わり。
すれ立て乙
WinSet,Top,,ahk_id %w% これが動作しません・・・(Bottomのほうは動作するのですが) ヘルプには「システムの設定によっては動作しない。」と書いてありますが 動作するように出来るのでしょうか? Win7 x64 AHKL 最新
16です そちらで聞いてみます
代替これでかざぐるマウスの、タブバー上ではタブ送り ボリュームバー上でホイールWD_ではページ送りできるんだけど、 ときどき不発する。 MouseGetPos,xPosi,yPosi,,,A WinGetPos,,,Width,,A if (yPosi < 75){ Send,^{Tab} }else if(xPosi<=20){ Send,^{WheelDown} }else if(Width - xPosi < 20){ send,{PgDn} }else{ send,{WheelDown} } アクティブウィンドウ左端のほうではCtrl + ホイール上下しているのを加えたつもり
MGLが理解できない悔しさをこんな所にまでぶつけるなよw
でも実際MGLに詳しい人はそっちに集まってるんでしょ? ならそっちに行った方が得じゃない
初級:
・記録したマクロを、構文や変数などで初歩的な構造化を施し、改変できる。
・ヘルプのスクリプト関数を調べて7割を活用できる。
中級:
・自作関数による基本的な構造化が出来る。(
>>261 >>265 CALL多用は除外)
・ヘルプのスクリプト関数を調べて9割を活用できる。
・googleで検索してトラブルシューティングやヘルプ未記載の仕様制限を確認できる。
・googleで検索して初歩的なAPI活用・OLE使用を行い、Autohotkeyの使用制限を突破できる。
・基本的な例外処理を行える。
上級:
・自作関数を適切に分類し、自作ライブラリを構築してCALLでincludeしている。
・ソフトウェアテストの行い易い構造化を行い、大規模になっても部分に切り分けたアジャイルな開発を行える。
・他の言語と比べたAutohotkeyの欠点を理解し、費用対効果でAutohotkeyが適している場合のみAutohotkeyを使う。
・高度な例外処理や、リソースのデッドロックによるフリーズに対処出来る。
超上級:
・Autohotkeyを卒業。オブジェクト操作は各種高級言語から、画像判定はOpenCVで行う。
・あるいは逆に、ソフトウェアテスト業界でAutohotkeyをバリバリ活用しているか、LancersなどでAutohotkeyの仕事を受注している。
余計な一言
Autohotkeyなんぞで数十倍以上の効率で仕事を処理できるなんて、なんて非効率で甘々な仕事なんでしょうか。羨ましいです。
tes
25 :
名無しさん@お腹いっぱい。 :2014/02/25(火) 16:14:22.12 ID:Wf1hRLkD0
SetTitleMatchModeが効いていないようなのですが原因がわかりません… 試しに SetTitleMatchMode, 3 #IfWinActive, Google ahk_exe firefox.exe Numpad1:: MsgBox, %A_TitleMatchMode% return #IfWinActive (↑Firefoxアドオンでタイトルの先頭にサイト名、後にURLが入るようにしています) この状態でGoogle上からテンキー1を打つと、メッセージには「1」と出てきます。 記述の仕方が何かおかしいのでしょうか?
URLを表示してる時点でウィンドウタイトルが一致してない
27 :
名無しさん@お腹いっぱい。 :2014/02/25(火) 19:33:08.63 ID:Wf1hRLkD0
>>26 はい、承知の上です。本来ならばSetTitleMatchModeが3だと完全一致なので、
この書き方ではメッセージボックス自体出ないはずですよね?
SetTitleMatchModeが効いていない感じがしたので
>>25 のように試したら、
メッセージボックスが実行されてしまう上にA_TitleMatchModeが"1"と出たので
やはり何か問題があるのかなと…。
SetTitleMatchMode,3 より上ですでにautoexecuteセクション終わってるのでは?
29 :
名無しさん@お腹いっぱい。 :2014/02/26(水) 10:36:41.93 ID:xg9/INB20
>>28 SetTitleMatchModeはahkファイルの先頭に記述しているのですが駄目なんですよね…。
試しに上記スクリプトだけを書いたもので起動したらちゃんと適用されました。
ちょっと問題のファイルを全体的に見直してみます。
ありがとうございました。
こんな感じの処理をしたいのですが、エラーになってしまいます 何かいい方法はありますでしょうか? hensuu=変数 #IfWinActive, %hensuu% 処理 #IfWinActive
ウィンドウクラスならahk_class等をつける 他なら#If hensuu
Firefoxのタブ内ではなく全ての開いているFirefoxのウインドウを一斉に更新(F5)する方法はありませんか? キャッシュやクッキーが一緒にならないようにFirefoxでプロファイルを複数作っている為、 ウインドウをそれぞれ立ち上げています。 一つ一つウインドウを切り替えてF5を押していく作業が面倒で簡略化したいのですが、 何か方法はないでしょうか? UWSCも試してみたのですが、IE寄りでありIDを取得しても同一になってしまうため使えませんでした。 今現在はhotkeyで試行錯誤していますがうまくいきません。
34 :
名無しさん@お腹いっぱい。 :2014/04/25(金) 15:24:20.27 ID:GRwnpshM0
結構単純な事かもしれませんが教えて下さい。 ;a := 2 ;b := 3 ;MsgBox, % a + b ; "5" と表示 このように数字を入力した場合aが002でも2でも戻りは一桁の5になりますが 指定の桁にする方法が分かりません。 どんな方法とればいいんでしょうか?
35 :
名無しさん@お腹いっぱい。 :2014/04/25(金) 15:54:15.99 ID:GRwnpshM0
自己解決。 strとか使えばいいみたいですねすいません
37 :
島本町で凄惨なイジメを受けて廃人になった方へ :2014/08/06(水) 14:12:10.28 ID:HvTaSNL60
>大阪府三島郡島本町の小学校や中学校は、暴力イジメ学校や。 島本町の学校でいじめ・暴力・脅迫・恐喝などを受け続けて廃人になってしもうた僕が言うんやから、 まちがいないで。僕のほかにも、イジメが原因で精神病になったりひきこもりになったりした子が何人もおる。 教師も校長も、暴力やいじめがあっても見て見ぬフリ。イジメに加担する教師すらおった。 誰かがイジメを苦にして自殺しても、「本校にイジメはなかった」と言うて逃げるんやろうなあ。 島本町の学校の関係者は、僕を捜し出して口封じをするな >島本町って町は、暴力といじめと口裏合わせと口封じの町なんだな 子供の時に受けた酷いイジメの体験は、一生癒えない深い傷になるなあ
38 :
名無しさん@お腹いっぱい。 :
2014/10/10(金) 12:40:50.15 ID:2tjS4zs80 ほっとけ