元スレ
1 :名無しさん@お腹いっぱい。 :2020/04/03(金) 18:35:06.00 ID:/YRSlUCD0.net
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
■配布元
http://ahkscript.org/download/
■前スレ
AutoHotkey スレッド part27
http://egg.5ch.net/test/read.cgi/software/1555770773/
■日本語解説等
AutoHotkey Wik
http://ahkwiki.net
AutoHotkeyを流行らせるページ(ミラー)
http://ahk.xrea.jp/ (不調時は http://hdd.s300.xrea.com/ahk/ )
AutoHotkeyJp(過去ログdatあり)
http://sites.google.com/site/autohotkeyjp/
Autohotkey日本語ヘルプ(chmファイル)
http://www6.atwiki.jp/eamat/
Autohotkey専用うpろだ
http://ux.getuploader.com/autohotkeyl/
簡易スクリプト掲示板
http://pastebin.com/
■派生版
IronAhk (.NET製、クロスプラットフォーム)
https://github.com/polyethene/IronAHK
AutoHotkey.dll (真のマルチスレッド対応など, AHKLの派生)
http://www.autohotkey.com/board/topic/39588-autohotkeydll/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
54 :名無しさん@お腹いっぱい。 (ワッチョイW d75a-lSy1):2020/04/26(日) 22:44:45 ID:2bxqh/0L0.net
チェンジキーアプリで、Winキー を 0x0064 にリマップし
F13 & i::Send {Lwin down}{Up}
F13 & k::Send {Lwin down}{Down}
F13 & l::Send {Lwin down}{Right}
F13 & j::Send {Lwin down}{Left}
で画面の移動できるんだけど、WINキーが押しっぱなし状態になって解除されない。。
24 :名無しさん@お腹いっぱい。 :2020/04/08(水) 19:50:51.07 ID:3Lm0oXeq0.net
試したけど他のウィンドウでも普通に取得できるんだが?
48 :名無しさん@お腹いっぱい。 :2020/04/25(土) 15:27:49.21 ID:DF0bAaYE0.net
今もできるのか確認してないけど試してみたら?他のWinキー使ったショートカットもなくなってもいいなら
ttps://sites.google.com/site/autohotkeyjp/reference/misc/Override
>Win+L および Win+U を除き、ウィンドウズのホットキーはレジストリを以下のように書き換えることで無効化出来る。
50 :名無しさん@お腹いっぱい。 (ワッチョイ aea5-hR2K):2020/04/25(土) 18:18:37 ID:SNW5imkM0.net
登録し直しに関しては、
f13::LWin
で良いのでは?
8 :名無しさん@お腹いっぱい。 :2020/04/05(日) 16:50:06.91 ID:GWmWDwN30.net
[InputA.ahk]
textA := “A”
a::MsgBox, % textA
d::MsgBox, % (textA . “D”)
[InputB.ahk]
textB := “B”
b::MsgBox, % textB
c::MsgBox, % (textB . “C”)
19 :名無しさん@お腹いっぱい。 :2020/04/07(火) 09:45:55.32 ID:ni8KzYV1M.net
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のジョイスティックサポートはかなり貧弱なのでプログラマブルにやる必要がある。
2 :名無しさん@お腹いっぱい。 (アンパンW 2b7e-zxou):2020/04/04(土) 14:55:58 ID:oDQUgnR500404.net
60 :名無しさん@お腹いっぱい。 :2020/04/27(月) 12:07:24.96 ID:mi7Y/HPe0.net
windows8.1でキーボードやマウスからの入力を一時的に無効にしようと
^b::
blockinput,on
sleep, 5000
blockinput, off
return
のように書いても普通にキー入力を受け付けています。
この命令は効果がないのでしょうか?
14 :名無しさん@お腹いっぱい。 :2020/04/06(月) 04:28:36.79 ID:8dTlIF+30.net
>もしアレだったらMGLのスクリプトが参考になると思う
ごめん真っ新なMGLでは参考にはならないかもしれないのでこの件は忘れて
63 :名無しさん@お腹いっぱい。 :2020/04/27(月) 20:14:11.79 ID:fuQIAEB8M.net
34 :名無しさん@お腹いっぱい。 :2020/04/10(金) 21:55:25.25 ID:hnZnjAMo0.net
ホットキーやタイマーでラベル名の代わりに関数指定できるけど
ここで指定した関数ってLibに置いといても自動で#Includeされないのね
33 :名無しさん@お腹いっぱい。 :2020/04/10(金) 10:12:10.42 ID:xZVTOdHh0.net
22 :名無しさん@お腹いっぱい。 (ワッチョイ c676-Blqg):2020/04/08(水) 01:27:19 ID:2MlwBg4U0.net
皆さんありがとうございます。
>>12
今回は、関数に落とし込まない方針で行きます。
>>13
つまり、↑のPastebinで貼ったコードにあるincludeFilesはInclude_ahk.ahkの記述内容から取得して、各ahkの初期化セクションへGoSub
その後Include_ahk.ahk自体を読み込むということですか?
記述内容から読み出す方法がわからないので勉強してきます。
それから、MGLのスクリプトは現状読めない+あまり複雑にはしたくないので、もしかしたら現状のままメインahkで2箇所を修正する方針でいくかもしれません。
>>15
読みました。
Include指令ではLoop系の組み込み変数は使用できないのではないですか?
工夫して、%A_LoopFileName%の部分を書き換えられれば良いと思うのですが、いかがでしょうか。これは難しいですか?
20 :名無しさん@お腹いっぱい。 :2020/04/07(火) 09:46:33.37 ID:ni8KzYV1M.net
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, 窓使いの憂鬱 等のキーボードフィルタドライバを用いるアプリケーションを使っている
39 :名無しさん@お腹いっぱい。 (ワッチョイW f7e5-Y7bu):2020/04/14(火) 08:18:24 ID:dRMATM1W0.net
素直に言語補完やスニペット機能のあるエディタ使うのがいいとおもうが
タイトルバー .py ってことはこういうとこに貼る断片コードじゃなくて
ちゃんとファイルとしての作成されてるpythonスプリクトなんだろうし
10 :名無しさん@お腹いっぱい。 (ワッチョイ 25e5-4JbH):2020/04/05(日) 18:08:01 ID:fo7yX2Dr0.net
イニシャライズを各AHK内で完結させたいならsubかfunctionにしてcall
ただし全体のグローバル変数であるという事実は変わらんが
エラった時のpastbin AHKのハイライトもあるのね
https://pastebin.com/dkUfkDTj
ただこれだと一時的に#includeをコメントアウトで外したいときにautoexecuteの
手直しも必要になるので islabel() isfunc() を入れたほうがいいかも
70 :名無しさん@お腹いっぱい。 (ワッチョイW e7e5-pSi1):2020/05/03(日) 10:17:19 ID:MUdN1Azr0.net
それ質問者は短押し0.3 長押し0.5 で判定のつもりで書いてると思うぞ
300msで長押しとみなすのは操作的にきついじゃろ
73 :名無しさん@お腹いっぱい。 (ワッチョイ 0758-ts7H):2020/05/03(日) 14:59:20 ID:+I3GRHTU0.net
>>72
とにかく参考にするにしても一行ずつどういう意味があるのか理解して使うことが大事
そうすりゃ元サンプルの通り2回押しの場合も入れようが省こうが自由に出来る
67 :名無しさん@お腹いっぱい。 (アウアウウーT Saab-+Q8n):2020/04/30(Thu) 15:10:49 ID:+ou1aYSca.net
56 :名無しさん@お腹いっぱい。 (ワッチョイ a66f-1Gce):2020/04/26(日) 23:11:47 ID:o1f5ivz30.net
>>54
そこは普通 Send, #{Up} でいいだろ
どうしても # がダメな理由があるなら {Lwin Up} も付けろよ
62 :名無しさん@お腹いっぱい。 :2020/04/27(月) 12:38:53.15 ID:mi7Y/HPe0.net
管理者権限で実行したところ上手くいきました、ありがとう。
29 :名無しさん@お腹いっぱい。 (ワッチョイ 4703-zfCe):2020/04/09(Thu) 19:08:11 ID:IPYVjpWT0.net
F13+WASDなどでカーソルを動かせるようにしてみたけど、それ以外のキーを押すと
普通に文字が入力されてしまう。
たとえばEを押しても入力されないように無視することはできない?
49 :名無しさん@お腹いっぱい。 :2020/04/25(土) 16:23:34.31 ID:2ju+Mg1a0.net
>Win+L および Win+U を除き
とある時点で論外だろ
なんでこう無意味なレスするんだか
のやり方は一応Win+Lも無効化出来るが標準のWinキーショートカット全て使えなくなるから
使いたいコマンドは全てF13で登録し直さなくてはならない
そもそもWinキーを修飾キーにしなきゃいけない必要あるのか?
IKJLと組み合わせるならAppsKeyや変換キーなどを修飾代わりに使えばそういう煩わしさも無く簡単に出来る
72 :名無しさん@お腹いっぱい。 (ワッチョイ df74-iPcU):2020/05/03(日) 14:38:23 ID:NG1wCXE/0.net
>>69
本当は
短押しの場合 Ctrl + C
二回押しの場合 wiindowsボタン + Ctrl + V
長押しの場合 Ctrl + V
としようと思ったんだけど(マウスのボタンに登録して1つのボタンで済ませるため)
Ctrl + Cまで混ぜると使い勝手悪くなりそうだから書くのをちょっと迷ってたんだ
ともあれ書いてくれたものを参考にしたら動きました、ありがとうございます
27 :テンプレ貼るとき注意!! :2020/04/08(水) 21:31:48.00 ID:OlhHP8xJM.net
31 :名無しさん@お腹いっぱい。 :2020/04/10(金) 00:26:31.34 ID:BgFZovgl6.net
11 :名無しさん@お腹いっぱい。 (ワッチョイ cb76-8H9x):2020/04/06(月) 01:59:36 ID:QgAFECbT0.net
>>10
なるほど確かにこれなら実現できますね!
ありがとうございました、とても勉強になりました
ところで下のようにしてみたのですが、#Include では変数が使えないみたいですね。
何かいい案はないでしょうか?
というのも、実際は10以上のファイルがあるので、ダラダラ書くよりLoopで回したいものでして・・・
https://pastebin.com/g2Gc1cDU
5 :名無しさん@お腹いっぱい。 (ワッチョイW 25e5-HXgt):2020/04/05(日) 15:14:23 ID:fo7yX2Dr0.net
その状態でAutoHotkey.ahkを動かす分にはいける
[AutoHotkey.ahk]
AAA := “aaAAaa”
a1::Return
a2::Return
b::MsgBox, % AAA
Return
includeは全てAutoHotkey.ahkとして展開されるので↑と同義になるから
ただしaとbのincludeを逆にしたらautoexrcuteが働かない
includeの位置は要注意
[AutoHotkey.ahk]
b::MsgBox, % AAA
AAA := “aaAAaa”
a1::Return
a2::Return
Return
あと当然だが a.ahk / b.ahk を単体起動した時はAutoHotkey.ahkから起動した時のようには動作しない
41 :名無しさん@お腹いっぱい。 (ワッチョイ ff76-xa8R):2020/04/21(火) 02:38:03 ID:YUMRQewr0.net
>>40
その書き方だと1回目は#WheelUpだけど2回目からは^#WheelUpになってるんじゃないかな?
と思っていろいろ試したけど、うまくいかなかった。
下のコードも試したけど、WheelDownはGetKeyStateが効かないらしく失敗。
(KeyHistory見たら10〜30ms押下状態維持してる感じだったし、このWhileでいけるんじゃないかと思った)
もしかしたら、SetTimerの10ms刻みくらいでいけるかも?
https://pastebin.com/wmnY8P5R
なんならChromeのズーム周りの挙動は不審なのか?
#WheelUp::Send, {WheelUp 5}
でもたまにズームするし、なんだろね
結局よくわからなかったので、他の有識者に任せます
ごめんなさい
55 :名無しさん@お腹いっぱい。 (ワッチョイ fa11-1Gce):2020/04/26(日) 22:54:04 ID:KoyAE8qb0.net
58 :名無しさん@お腹いっぱい。 (ワッチョイW 4ee5-m7f2):2020/04/27(月) 00:23:11 ID:tTWj98L10.net
手元にPCないから試してないけど
F13 up:: Send {Lwin up}
は?
71 :名無しさん@お腹いっぱい。 (ワッチョイ bf91-ts7H):2020/05/03(日) 10:23:02 ID:BcgnsImu0.net
>>70
どこから0.5なんて数字が出て来たんだ?
別に0.3秒判定でも操作的には全然きつく無いんだが
普通の短押しってせいぜい100ms〜150msくらいだしな
事実>>69のスクリプトでも普通に押し分けられる
仮に0.5秒以上にしたいなら KeyWait,v,T 0.5 にすりゃいいだけだ
47 :名無しさん@お腹いっぱい。 :2020/04/25(土) 13:58:24.18 ID:MwuvcNJDa.net
キーチェンジャーで探してみます。ありがとうございます。
66 :名無しさん@お腹いっぱい。 (ワッチョイ 7f76-x2cz):2020/04/30(Thu) 02:55:18 ID:P5SWOXvf0.net
%A_MyDocuments%¥AutoHotkey¥Lib¥mylib.ahk
というファイルを作ると
#include <mylib>
で参照できるようになるというのはわかったんですが
環境変数などを設定して上記フォルダ以外の任意の検索パス(c:¥src¥ahk¥libなど)を指定する方法はないですか?
37 :名無しさん@お腹いっぱい。 :2020/04/13(月) 12:34:34.31 ID:nrV1kuRV0.net
こっちの環境では動作しないみたい
ネットにはいろいろ情報転がってたけど、おま環だらけだったし、
に書いたやつも俺環かもしれない
ついでに 補足: Blindつけ忘れた
36 :名無しさん@お腹いっぱい。 :2020/04/13(月) 08:05:15.53 ID:KIluxZ1e0.net
AHK_L1.1.08.01では
#IfWinActive ahk_class Framework::CFrame
^E::SendInput {blind}{UP}
^X::SendInput {blind}{DOWN}
#If
で動作してるが、もしかして非互換性の問題とか?
64 :名無しさん@お腹いっぱい。 :2020/04/27(月) 20:15:13.63 ID:fuQIAEB8M.net
4 :名無しさん@お腹いっぱい。 (ワッチョイ 6511-eEke):2020/04/05(日) 12:48:56 ID:KUQx6rxd0.net
23 :名無しさん@お腹いっぱい。 :2020/04/08(水) 19:25:50.63 ID:hVpKLzMw0.net
ジョイスティックの傾きを
GetKeyState, X, JoyX, P
で取得しようとしても、「49.999237」の値しか取得できない。
だけど、autohotkeyのメニュー画面がアクティブの状態だと正常に取得できる。
他のウィンドウでも正常に取得できるようにするにはどうすればいいでしょうか
16 :名無しさん@お腹いっぱい。 :2020/04/07(火) 09:25:32.40 ID:s8mR46Q4M.net
9 :名無しさん@お腹いっぱい。 (ワッチョイ 25e5-4JbH):2020/04/05(日) 17:54:59 ID:fo7yX2Dr0.net
65 :名無しさん@お腹いっぱい。 :2020/04/27(月) 20:19:15.89 ID:fuQIAEB8M.net
+WheelDown::SendInput d ; Shift + ホイール下回転
KeyHistory
h=Hook Hotkey
i=Ignored because it was generated by an AHK script
d=Down
u=Up
■正常(入力d)
d 0.03 LShift ← キー入力
d 0.03 LShift ← キーリピート
d 0.03 LShift ← キーリピート
h d 0.02 WheelDown ← キー入力(ホットキー開始)
i u 0.02 LShift ← 修飾キー解除
i d 0.00 d ← SendInput
i u 0.00 d ← SendInput
i d 0.00 LShift ← 修飾キー復元(ホットキー終了)
■すり抜け(入力D)
d 0.03 LShift
d 0.03 LShift
d 0.03 LShift
h d 0.02 WheelDown
i u 0.02 LShift
d 0.00 LShift ← すり抜け
i d 0.00 d
i u 0.00 d
i d 0.00 LShift
32 :名無しさん@お腹いっぱい。 :2020/04/10(金) 04:00:55.40 ID:x144LDcxM.net
68 :名無しさん@お腹いっぱい。 (ワッチョイ df74-iPcU):2020/05/03(日) 08:39:44 ID:NG1wCXE/0.net
Ctrl + Vを押した時に
短押しの場合 Ctrl + V
長押しの場合 wiindowsボタン + Ctrl + V
という機能をつけようとしたんだけどうまくいかなかった
修飾キーの扱いがわるいのか、keywaitのところがおかしいのか
https://i.imgur.com/hZ6dEB9.jpg
#UseHook ;ホットキーラベルの定義で、常にフックを使用するようにする
Ctrl & v::
KeyWait,Control
KeyWait,v,T0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
send, <^v ;ここに任意のコマンド 長押し
KeyWait,Control
KeyWait,v
Return
}
KeyWait,Control
KeyWait,v,D T0.2 ;0.2秒対象キーが押されるのを待つ
If(ErrorLevel)
{
send, ^#v ;ここに任意のコマンド 1度押し
KeyWait,Control
KeyWait,v
Return
}
38 :名無しさん@お腹いっぱい。 (ワッチョイ 8e76-q+nc):2020/04/14(火) 02:46:49 ID:pKp7OSAA0.net
ahk外部の話になっちゃうんだけど
タイトルバーに .py が含まれていたら
Python辞書を指定して定型文ツールを起動みたいなことやりたいんだけど
辞書指定して起動できる定型文貼り付けツールみたいのないかな
その部分までahkで真面目に実装すると大作になりそうなんでちょっとめんどい
35 :名無しさん@お腹いっぱい。 (ワッチョイ c676-zfCe):2020/04/13(月) 00:59:19 ID:nrV1kuRV0.net
OneNote2016でSend, {Up}とSend, {Down}が動作しない問題が
あっさり解決したから一応共有しとく
OS: Windows 10
AHK Version: 1.1.32.00
#If, WinActive(“ahk_exe ONENOTE.EXE”)
vk1D & i::ControlSend, OneNote::DocumentCanvas1, {Up}
vk1D & k::ControlSend, OneNote::DocumentCanvas1, {Down}
#If
51 :名無しさん@お腹いっぱい。 :2020/04/25(土) 23:25:50.05 ID:6AVBCm7d0.net
CapsLockをF13にレジストリで書き換えて似たようなことしてるけどかなり快適
43 :名無しさん@お腹いっぱい。 :2020/04/25(土) 02:22:43.58 ID:MwuvcNJDa.net
ウィンドウの位置を配置するWINキー+↑↓←→をWINキー+IKJLにしたくていろいろやったんですけど、どうしても安定して同じように動かないです。
同じようなことやってる人がいたらサンプル見せてもらえませんか?
30 :名無しさん@お腹いっぱい。 (ワッチョイ 9b29-AglQ):2020/04/09(Thu) 19:55:10 ID:dK6YnmRs0.net
F13 & e:: Return
誤爆しそうなWASD周りを一通り入れときゃ良いんじゃね
53 :名無しさん@お腹いっぱい。 (ワッチョイ 6bb1-QpYc):2020/04/26(日) 21:48:28 ID:fZASDaJl0.net
XPの時代はポータブルでできたけど、今はAHKを管理者権限で起動しないと完全な動作ができないんで無理
レスを投稿する(名前省略可)