[過去ログ] AutoHotkey スレッド part28 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(4): (ワッチョイ aef9-dJm7) 2020/04/03(金)18:35 ID:/YRSlUCD0(1) AAS
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512

■配布元
外部リンク:ahkscript.org

■前スレ
AutoHotkey スレッド part27
2chスレ:software

■日本語解説等
AutoHotkey Wik
省16
2: (アンパンW 2b7e-zxou) 2020/04/04(土)14:55 ID:oDQUgnR500404(1) AAS
いちもつ
3: (ワッチョイ cb76-8H9x) 2020/04/05(日)12:03 ID:GWmWDwN30(1/4) AAS
Include先も含め、AutoHotkey.ahkに関係するホットキー全体で
変数を共有するためには、その都度IniReadするしかないですか?
グローバル変数的な何かはないのかなと。

可能なら、AutoHotkey.ahkからのInclude先AHKファイルで定義した変数を共有したいのですが。

下のような構成で、bを押したときにaaAAaaと表示させたい

[AutoHotkey.ahk]
#Include a.ahk
#Include b.ahk
Return

[a.ahk]
省5
4: (ワッチョイ 6511-eEke) 2020/04/05(日)12:48 ID:KUQx6rxd0(1) AAS
脳内で書いてないで実際に動かしてみなよ
5
(1): (ワッチョイW 25e5-HXgt) 2020/04/05(日)15:14 ID:fo7yX2Dr0(1/3) AAS
その状態でAutoHotkey.ahkを動かす分にはいける
[AutoHotkey.ahk]
AAA := "aaAAaa"
a1::Return
a2::Return
b::MsgBox, % AAA
Return
includeは全てAutoHotkey.ahkとして展開されるので↑と同義になるから

ただしaとbのincludeを逆にしたらautoexrcuteが働かない
includeの位置は要注意
省7
6: (ワッチョイ cb76-8H9x) 2020/04/05(日)16:49 ID:GWmWDwN30(2/4) AAS
>>5
わかりました、ありがとうございます。
Includeは内容を展開しているだけだったのですね。
まずInclude元でAutoexecuteが開始し、Includeがあればその先のReturnまでAutoexecuteされ、
またInclude元に戻って、そのInclude元のReturnまではAutoexecuteされるものだと思っておりました。

自分のスクリプト郡は、Include先でReturnがあったためにそこでAutoexecuteが終わってしまっていた訳ですね。
7: (ワッチョイ cb76-8H9x) 2020/04/05(日)16:49 ID:GWmWDwN30(3/4) AAS
ところで以下ような感じに、ファイルごとに役割を分け、
またそれぞれのファイル内でしか使わない変数はそのファイル内に収めておきたいのですが、
その方法はありますでしょうか?(下の構成ではInputA.ahkの2行目でAutoexecuteが終わってしまいますよね。)

あまり美しくないですが、AutoHotkey.ahkの先頭にVariables.ahkのようなものをIncludeして、そこで変数リストを作るとかしかないですかね?

[AutoHotkey.ahk]
#Include InputA.ahk
#Include InputB.ahk
8: (ワッチョイ cb76-8H9x) 2020/04/05(日)16:50 ID:GWmWDwN30(4/4) AAS
[InputA.ahk]
textA := "A"
a::MsgBox, % textA
d::MsgBox, % (textA . "D")

[InputB.ahk]
textB := "B"
b::MsgBox, % textB
c::MsgBox, % (textB . "C")
9: (ワッチョイ 25e5-4JbH) 2020/04/05(日)17:54 ID:fo7yX2Dr0(2/3) AAS
test
10
(1): (ワッチョイ 25e5-4JbH) 2020/04/05(日)18:08 ID:fo7yX2Dr0(3/3) AAS
イニシャライズを各AHK内で完結させたいならsubかfunctionにしてcall
ただし全体のグローバル変数であるという事実は変わらんが

エラった時のpastbin AHKのハイライトもあるのね
外部リンク:pastebin.com

ただこれだと一時的に#includeをコメントアウトで外したいときにautoexecuteの
手直しも必要になるので islabel() isfunc() を入れたほうがいいかも
11
(1): (ワッチョイ cb76-8H9x) 2020/04/06(月)01:59 ID:QgAFECbT0(1) AAS
>>10
なるほど確かにこれなら実現できますね!
ありがとうございました、とても勉強になりました

ところで下のようにしてみたのですが、#Include では変数が使えないみたいですね。
何かいい案はないでしょうか?

というのも、実際は10以上のファイルがあるので、ダラダラ書くよりLoopで回したいものでして・・・

外部リンク:pastebin.com
12
(1): (ワッチョイW 25e5-HXgt) 2020/04/06(月)03:45 ID:pNj6d1Pb0(1) AAS
無理だが
いっそ関数ライブラリ化して全部 %A_ScriptDir%/Lib に押し込むという手もある
したらincludeそのものが不要になる
13
(2): (ワッチョイ e5b1-mnXZ) 2020/04/06(月)04:21 ID:8dTlIF+30(1/2) AAS
>>11
Includeするahk内で更にInclude出来るはずだぞ(その内容は「#Include 〜.ahk」だけでも良い)
だからメインahk(AutoHotkey.ahk)内でのInclude用ahkの名前は固定しといて
メインahkでそのahkファイルを書き換えすれば手直しは要らなくなると思う

例として、メインahkにIncludeするファイル名を「Include_ahk.ahk」とし

Include_ahk.ahk内は
-----------------------------------
#Include InputA.ahk
#Include InputB.ahk
-----------------------------------
省4
14: (ワッチョイ e5b1-mnXZ) 2020/04/06(月)04:28 ID:8dTlIF+30(2/2) AAS
>>13
>もしアレだったらMGLのスクリプトが参考になると思う
ごめん真っ新なMGLでは参考にはならないかもしれないのでこの件は忘れて
15
(1): (ワンミングク MMa3-YctG) 2020/04/06(月)10:48 ID:Tm/x8Nf+M(1) AAS
外部リンク[htm]:www.autohotkey.com
マニュアル読み直してたらv1.1.28以降はErrorlevelとコマンドライン文字列以外のすべての組み込み変数が有効とあるね
Loop,Filesのローカル組み込み変数はどうなんだろ
もし使えるなら↓みたいにできるのかも(出先からのなので試してはいない)
#include %A_SprictDir%
Loop, Files, %A_SprictDir%\*.ahk, F
If (A_LoopFileFullPath != A_SprictFullPath)
#include %A_LoopFileName%
16: (ラクッペペ MM4b-j0VC) 2020/04/07(火)09:25 ID:s8mR46Q4M(1/2) AAS
↓以下テンプレ(微修正)
----------------------------

!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
!extend:on:vvvvv:1000:512
↑スレ立てする時は3行にして下さい

■配布元
外部リンク:autohotkey.com

■前スレ
AutoHotkey スレッド part27
省15
17: (ラクッペペ MM4b-j0VC) 2020/04/07(火)09:26 ID:s8mR46Q4M(2/2) AAS
■重要事項
オリジナルである、旧 "AutoHotKey" の開発は2009年9月で終了している。
現在は、そこからフォークした "AutoHotkey_L" が主流となり、2014年1月からは後のLが取れ
正式にAutohotkeyとして扱われるようになりました。
よって古いスクリプト(主にDllCall)は最新Verで動作しないものがあり、その場合はスクリプトの修正が必用です。

旧版のAHK1.0との変更点多数。新しい仕様や互換性についてはドキュメントを良く読むこと。
外部リンク[htm]:www.autohotkey.com
外部リンク:ahkwiki.net

※新規利用者には最新版を推奨しますが、AHK1.0(2009年9月までのVer)の利用者はAHK1.1への移行に際して
少なからず改修が必要となります。特に、旧流行らせるページの配布物(MouseGesture等)の多くは
省12
18
(1): (ラクッペペ MM4b-j0VC) 2020/04/07(火)09:44 ID:ni8KzYV1M(1/3) AAS
以下FAQ等

■実行環境
Q1:スクリプトに書いた日本語が文字化けしちゃうんだけど...
A1:スクリプトファイルを「UTF-8」の「BOM」付きで保存する。(AHK1.1)

Q2:初めて使うけどどれを使えばいいの?
A2:AHK1.1のユニコード版を推奨。
  旧流行らせるページの配布物をそのまま使う場合はAHK1.0を利用する事。
  64ビットOSでAHK1.1、32ビット版の使用は制約が多いので64ビット版を強く推奨。

■リマップ・ホットキー割り当て
Q1:[CapsLock(英数)][ひらがな][全角/半角]キーの割り当てがうまくいかないよ
省13
19: (ラクッペペ MM4b-j0VC) 2020/04/07(火)09:45 ID:ni8KzYV1M(2/3) AAS
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}
省13
20: (ラクッペペ MM4b-j0VC) 2020/04/07(火)09:46 ID:ni8KzYV1M(3/3) AAS
Q8:ジョイスティックのボタン1とボタン2の入れ替えなどはどうやってやるの?
A8:AutoHotkeyではできない。

Q9:[Ctrl][Shift][Alt]が押されっぱなしになる時がある。これってAHKのせい?
A9:AHKが原因の場合とそうでないときがある
  ○AHKが原因の場合
  AHKには、以下のような修飾キー付きのホットキーで修飾キー無しでキーを発効する場合、
  一時的に修飾キー押下を解除して、発効後に押下状態を再度設定する機構がある。
  しかしこのように発効するキーストロークが多い場合は、Sendコマンドが完了する前に
  物理キーが押下解除されてしまっている場合がある。この齟齬が押しっぱなしの原因となる。
   例) ^W::Send, {w 30}
省11
21: (ワッチョイW 25e5-3Fs8) 2020/04/07(火)13:28 ID:OicfBoSv0(1) AAS
テンプレ貼り乙
22: (ワッチョイ c676-Blqg) 2020/04/08(水)01:27 ID:2MlwBg4U0(1) AAS
皆さんありがとうございます。

>>12
今回は、関数に落とし込まない方針で行きます。

>>13
つまり、↑のPastebinで貼ったコードにあるincludeFilesはInclude_ahk.ahkの記述内容から取得して、各ahkの初期化セクションへGoSub
その後Include_ahk.ahk自体を読み込むということですか?
記述内容から読み出す方法がわからないので勉強してきます。

それから、MGLのスクリプトは現状読めない+あまり複雑にはしたくないので、もしかしたら現状のままメインahkで2箇所を修正する方針でいくかもしれません。

>>15
読みました。
省2
23
(1): (ワッチョイ 9f3e-kpEi) 2020/04/08(水)19:25 ID:hVpKLzMw0(1/2) AAS
ジョイスティックの傾きを
GetKeyState, X, JoyX, P
で取得しようとしても、「49.999237」の値しか取得できない。
だけど、autohotkeyのメニュー画面がアクティブの状態だと正常に取得できる。

他のウィンドウでも正常に取得できるようにするにはどうすればいいでしょうか
24
(1): (ワッチョイ 9bd3-AglQ) 2020/04/08(水)19:50 ID:3Lm0oXeq0(1/2) AAS
>>23
試したけど他のウィンドウでも普通に取得できるんだが?
25
(1): (ワッチョイ 9f3e-kpEi) 2020/04/08(水)20:28 ID:hVpKLzMw0(2/2) AAS
>>24
そうすると自身のpc環境特有の問題っぽいですね。
再インストとかいろいろ試してみます
26: (ワッチョイ 9bd3-AglQ) 2020/04/08(水)20:37 ID:3Lm0oXeq0(2/2) AAS
>>25
ちなみに中央値は49.999237で合ってる
スティック左に倒したときは0.001526、右に倒した時は100.000000
環境というよりも何か根本的な勘違いじゃね
AHKの画面アクティブだけ動くってとこからして
27: テンプレ貼るとき注意!! (ラクッペペ MM8e-QaPY) 2020/04/08(水)21:31 ID:OlhHP8xJM(1) AAS
↓以下テンプレ ※規制が厳しくなったせいで貼るときに浪人がないとBBQに規制されるので注意!!
外部リンク:pastebin.com

おかげで手持ちの回線全部焼かれた (#^ω^)ビキビキ
28: (ワッチョイ c676-q+nc) 2020/04/09(木)04:30 ID:slr7f9330(1) AAS
こえーよなんだよこのサイト
画像リンク[png]:i.imgur.com
29
(2): (ワッチョイ 4703-zfCe) 2020/04/09(木)19:08 ID:IPYVjpWT0(1) AAS
F13+WASDなどでカーソルを動かせるようにしてみたけど、それ以外のキーを押すと
普通に文字が入力されてしまう。
たとえばEを押しても入力されないように無視することはできない?
30
(1): (ワッチョイ 9b29-AglQ) 2020/04/09(木)19:55 ID:dK6YnmRs0(1) AAS
F13 & e:: Return

誤爆しそうなWASD周りを一通り入れときゃ良いんじゃね
31
(1): (ガックシ 068e-zfCe) 2020/04/10(金)00:26 ID:BgFZovgl6(1) AAS
>>29
実際に自分で使っている方法(もっといい方法はあると思うけど)
外部リンク:pastebin.com
32
(1): (ラクッペペ MM8e-QaPY) 2020/04/10(金)04:00 ID:x144LDcxM(1) AAS
>>29
LowLevelKeyboardProcを使って入力を破棄する方法
大量のホットキーを登録しないで済む
外部リンク:pastebin.com
33: (ワッチョイ 4703-zfCe) 2020/04/10(金)10:12 ID:xZVTOdHh0(1) AAS
>>30-32
ありがとう同志たち
34: (ワッチョイ e273-FHOM) 2020/04/10(金)21:55 ID:hnZnjAMo0(1) AAS
ホットキーやタイマーでラベル名の代わりに関数指定できるけど
ここで指定した関数ってLibに置いといても自動で#Includeされないのね
35
(3): (ワッチョイ c676-zfCe) 2020/04/13(月)00:59 ID:nrV1kuRV0(1/2) AAS
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
36
(2): (ワッチョイ e2ba-ydAG) 2020/04/13(月)08:05 ID:KIluxZ1e0(1) AAS
>>35
AHK_L1.1.08.01では

#IfWinActive ahk_class Framework::CFrame
^E::SendInput {blind}{UP}
^X::SendInput {blind}{DOWN}
#If
で動作してるが、もしかして非互換性の問題とか?
37: (ワッチョイ c676-zfCe) 2020/04/13(月)12:34 ID:nrV1kuRV0(2/2) AAS
>>36
こっちの環境では動作しないみたい
ネットにはいろいろ情報転がってたけど、おま環だらけだったし、
>>35 に書いたやつも俺環かもしれない

ついでに >>35 補足: Blindつけ忘れた
38: (ワッチョイ 8e76-q+nc) 2020/04/14(火)02:46 ID:pKp7OSAA0(1) AAS
ahk外部の話になっちゃうんだけど
タイトルバーに .py が含まれていたら
Python辞書を指定して定型文ツールを起動みたいなことやりたいんだけど
辞書指定して起動できる定型文貼り付けツールみたいのないかな
その部分までahkで真面目に実装すると大作になりそうなんでちょっとめんどい
39: (ワッチョイW f7e5-Y7bu) 2020/04/14(火)08:18 ID:dRMATM1W0(1) AAS
素直に言語補完やスニペット機能のあるエディタ使うのがいいとおもうが
タイトルバー .py ってことはこういうとこに貼る断片コードじゃなくて
ちゃんとファイルとしての作成されてるpythonスプリクトなんだろうし
40
(2): (ワッチョイ 579b-xa8R) 2020/04/17(金)22:43 ID:NUam5qRj0(1) AAS
winキー押下のときスクロール量を増加、
ctrl+winキーでさらにスクロール量増加、という処理をしたいです。
winキーをF13にしているんですが、ctrlがたまに抜けてwebブラウザ見てるときとかに
ズームになってしまいます。。。宜しくお願いいたします。

; スクロール量増加
F13 & WheelUp::
If GetKeyState("Ctrl", "P") ;ctrlが押されているか?の確認
{
Send, {WheelUp 20} ;ctrl含めた3つ同時押しの処理
}
省15
41: (ワッチョイ ff76-xa8R) 2020/04/21(火)02:38 ID:YUMRQewr0(1) AAS
>>40
その書き方だと1回目は#WheelUpだけど2回目からは^#WheelUpになってるんじゃないかな?
と思っていろいろ試したけど、うまくいかなかった。
下のコードも試したけど、WheelDownはGetKeyStateが効かないらしく失敗。
(KeyHistory見たら10〜30ms押下状態維持してる感じだったし、このWhileでいけるんじゃないかと思った)
もしかしたら、SetTimerの10ms刻みくらいでいけるかも?
外部リンク:pastebin.com
なんならChromeのズーム周りの挙動は不審なのか?
#WheelUp::Send, {WheelUp 5}
でもたまにズームするし、なんだろね
省2
42: (ワッチョイW ffdc-AOfM) 2020/04/21(火)09:58 ID:UBVe/E0a0(1) AAS
GetKeyStateは押下情報見てるだけで横取りしてるわけじゃなかったような
ctrl+wheelの挙動にしたくないならブラウザがCtrl押下を検知しないよう
Hotkeyかなんかで殺しとかなきゃいかんのでは
43
(3): (アウアウオー Sa2e-lSy1) 2020/04/25(土)02:22 ID:MwuvcNJDa(1/3) AAS
ウィンドウの位置を配置するWINキー+↑↓←→をWINキー+IKJLにしたくていろいろやったんですけど、どうしても安定して同じように動かないです。
同じようなことやってる人がいたらサンプル見せてもらえませんか?
44
(1): (ワッチョイ 2e30-1Gce) 2020/04/25(土)02:33 ID:kLRbU++B0(1) AAS
>>43
何がどう安定しないのかの原因追及ならまだしもクレクレは却下
自分のスクリプトをまず貼るのが礼儀
45
(2): (ワッチョイ aea5-hR2K) 2020/04/25(土)12:47 ID:SNW5imkM0(1/2) AAS
>>43
とりあえず、Win+Lで別のことをやりたいなら、
Winキーをレジストリ系のキーチェンジャーでF13とかにしておかないとダメだろうね。
46: (アウアウオー Sa2e-lSy1) 2020/04/25(土)13:56 ID:MwuvcNJDa(2/3) AAS
>>44
すいません。出直してきます。
47
(1): (アウアウオー Sa2e-lSy1) 2020/04/25(土)13:58 ID:MwuvcNJDa(3/3) AAS
>>45
キーチェンジャーで探してみます。ありがとうございます。
48
(1): (ワッチョイ acf0-1Gce) 2020/04/25(土)15:27 ID:DF0bAaYE0(1) AAS
>>47
今もできるのか確認してないけど試してみたら?他のWinキー使ったショートカットもなくなってもいいなら
外部リンク:sites.google.com
>Win+L および Win+U を除き、ウィンドウズのホットキーはレジストリを以下のように書き換えることで無効化出来る。
49: (ワッチョイ 2c08-1Gce) 2020/04/25(土)16:23 ID:2ju+Mg1a0(1) AAS
>>48
>Win+L および Win+U を除き
とある時点で論外だろ
なんでこう無意味なレスするんだか

>>45のやり方は一応Win+Lも無効化出来るが標準のWinキーショートカット全て使えなくなるから
使いたいコマンドは全てF13で登録し直さなくてはならない

>>43
そもそもWinキーを修飾キーにしなきゃいけない必要あるのか?
IKJLと組み合わせるならAppsKeyや変換キーなどを修飾代わりに使えばそういう煩わしさも無く簡単に出来る
50: (ワッチョイ aea5-hR2K) 2020/04/25(土)18:18 ID:SNW5imkM0(2/2) AAS
登録し直しに関しては、
f13::LWin
で良いのでは?
51: (ワッチョイW ca7e-enhv) 2020/04/25(土)23:25 ID:6AVBCm7d0(1) AAS
CapsLockをF13にレジストリで書き換えて似たようなことしてるけどかなり快適
52: (ワッチョイ 3876-Btmo) 2020/04/26(日)16:38 ID:qSNpI2+j0(1) AAS
ポータビリティ重視してる身としてはレジストリ書き換えは論外だから、
その前提で工夫するだろうな
53: (ワッチョイ 6bb1-QpYc) 2020/04/26(日)21:48 ID:fZASDaJl0(1) AAS
XPの時代はポータブルでできたけど、今はAHKを管理者権限で起動しないと完全な動作ができないんで無理
54
(1): (ワッチョイW d75a-lSy1) 2020/04/26(日)22:44 ID:2bxqh/0L0(1) AAS
チェンジキーアプリで、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キーが押しっぱなし状態になって解除されない。。
55: (ワッチョイ fa11-1Gce) 2020/04/26(日)22:54 ID:KoyAE8qb0(1) AAS
そりゃdownだからなあ
56
(1): (ワッチョイ a66f-1Gce) 2020/04/26(日)23:11 ID:o1f5ivz30(1) AAS
>>54
そこは普通 Send, #{Up} でいいだろ
どうしても # がダメな理由があるなら {Lwin Up} も付けろよ
57
(1): (ワッチョイW d75a-lSy1) 2020/04/27(月)00:09 ID:V/CoopeO0(1) AAS
>>56
両方やってみたけどウィンドウを移動中に効かなくなっちゃいます
58: (ワッチョイW 4ee5-m7f2) 2020/04/27(月)00:23 ID:tTWj98L10(1) AAS
手元にPCないから試してないけど
F13 up:: Send {Lwin up}
は?
59: (ワッチョイ a66f-1Gce) 2020/04/27(月)00:26 ID:9dSvcxyQ0(1) AAS
>>57
移動中とか意味不明
Win10なら最大化最小化などのショートカットだろそれ

で、何がダメなのか知らんが、F13を離したときに Send, {Lwin Up} するようにすりゃ良いんじゃねえの
色々と説明不足だしもう少し頭使え
60
(1): (ワッチョイ 84b1-R0M4) 2020/04/27(月)12:07 ID:mi7Y/HPe0(1/2) AAS
windows8.1でキーボードやマウスからの入力を一時的に無効にしようと

^b::
blockinput,on
sleep, 5000
blockinput, off
return

のように書いても普通にキー入力を受け付けています。
この命令は効果がないのでしょうか?
61
(1): (ワッチョイ a684-1Gce) 2020/04/27(月)12:26 ID:3hqSER8B0(1) AAS
>>60
Win10だけどうちでは管理者権限で実行すれば正常に動くぞ
普通の権限だと効果無し
ただしそのスクリプトだとCtrlを離す操作もブロックされてCtrl押されっぱなしになるから
5秒経過後blockinput, offにしたあと挙動おかしくなるからKeyWaitなどで離したあとBlockInput,onにした方が良いだろうな
62: (ワッチョイ 84b1-R0M4) 2020/04/27(月)12:38 ID:mi7Y/HPe0(2/2) AAS
>>61
管理者権限で実行したところ上手くいきました、ありがとう。
63
(1): (ラクッペペ MM34-rnxJ) 2020/04/27(月)20:14 ID:fuQIAEB8M(1/3) AAS
>>40
昔からあるホットキーすり抜け問題
完全な回避は無理だがBlockInputやSendPlay(いろいろ制限あり)を使えば
高負荷時以外であれば回避できる

ホットキーすり抜け対策(要管理者権限)
外部リンク:pastebin.com
64
(1): (ラクッペペ MM34-rnxJ) 2020/04/27(月)20:15 ID:fuQIAEB8M(2/3) AAS
ホットキーすり抜けってなんぞや?という人はこちら

すり抜け条件
・修飾キーを入力(ホットキー、Send)
・高速で過剰な入力(ホイール回転など)
・PC負荷が掛かっている状態

ホットキーすり抜け再現スクリプト(要管理者権限)
外部リンク:pastebin.com
65
(1): (ラクッペペ MM34-rnxJ) 2020/04/27(月)20:19 ID:fuQIAEB8M(3/3) AAS
AA省
66
(1): (ワッチョイ 7f76-x2cz) 2020/04/30(木)02:55 ID:P5SWOXvf0(1) AAS
%A_MyDocuments%\AutoHotkey\Lib\mylib.ahk
というファイルを作ると
#include <mylib>
で参照できるようになるというのはわかったんですが
環境変数などを設定して上記フォルダ以外の任意の検索パス(c:\src\ahk\libなど)を指定する方法はないですか?
67: (アウアウウーT Saab-+Q8n) 2020/04/30(木)15:10 ID:+ou1aYSca(1) AAS
>>66
変数は使えないけど
#include c:\src\ahk\lib
#include mylib.ahk
#include mylib2.ahk
という書き方ならできるね
外部リンク:ahkwiki.net
68
(1): (ワッチョイ df74-iPcU) 2020/05/03(日)08:39 ID:NG1wCXE/0(1/2) AAS
Ctrl + Vを押した時に
短押しの場合 Ctrl + V
長押しの場合 wiindowsボタン + Ctrl + V
という機能をつけようとしたんだけどうまくいかなかった
修飾キーの扱いがわるいのか、keywaitのところがおかしいのか

画像リンク[jpg]:i.imgur.com

#UseHook ;ホットキーラベルの定義で、常にフックを使用するようにする

Ctrl & v::
KeyWait,Control
KeyWait,v,T0.3 ;0.3秒対象キーが押されたかどうか
省16
69
(3): (ワッチョイ bf91-ts7H) 2020/05/03(日)09:46 ID:BcgnsImu0(1/2) AAS
>>68
wikiのサンプルコードを見るのは良いけど一行ずつの意味を正しく理解して無駄を省けよ
長押しor短押し判定のみなら KeyWait,v,D T0.2 の部分は要らねえだろ
あと #(Winキー) 付け加える位置も間違ってるし

^v::
KeyWait,v,T 0.3 ;0.3秒対象キーが押されたかどうか
If(ErrorLevel)
{
msgbox, Ctrl+Vを長押ししました ;ここに任意のコマンド 長押し
KeyWait,Ctrl
省5
70
(1): (ワッチョイW e7e5-pSi1) 2020/05/03(日)10:17 ID:MUdN1Azr0(1) AAS
それ質問者は短押し0.3 長押し0.5 で判定のつもりで書いてると思うぞ
300msで長押しとみなすのは操作的にきついじゃろ
71: (ワッチョイ bf91-ts7H) 2020/05/03(日)10:23 ID:BcgnsImu0(2/2) AAS
>>70
どこから0.5なんて数字が出て来たんだ?
別に0.3秒判定でも操作的には全然きつく無いんだが
普通の短押しってせいぜい100ms〜150msくらいだしな
事実>>69のスクリプトでも普通に押し分けられる
仮に0.5秒以上にしたいなら KeyWait,v,T 0.5 にすりゃいいだけだ
72
(1): (ワッチョイ df74-iPcU) 2020/05/03(日)14:38 ID:NG1wCXE/0(2/2) AAS
>>69
本当は
短押しの場合 Ctrl + C
二回押しの場合 wiindowsボタン + Ctrl + V
長押しの場合 Ctrl + V

としようと思ったんだけど(マウスのボタンに登録して1つのボタンで済ませるため)
Ctrl + Cまで混ぜると使い勝手悪くなりそうだから書くのをちょっと迷ってたんだ

ともあれ書いてくれたものを参考にしたら動きました、ありがとうございます
73
(1): (ワッチョイ 0758-ts7H) 2020/05/03(日)14:59 ID:+I3GRHTU0(1) AAS
>>72
とにかく参考にするにしても一行ずつどういう意味があるのか理解して使うことが大事
そうすりゃ元サンプルの通り2回押しの場合も入れようが省こうが自由に出来る
74
(1): (コードモ c776-x2cz) 2020/05/05(火)21:38 ID:S9G2EtUY00505(1) AAS
自作関数ってこの呼び出し方できないの?

mb(mes)
{
msgbox % mes
}

mb,"hello"
mb % "hello"
75: (ワッチョイ e7b1-Ku5/) 2020/05/05(火)22:37 ID:i0X3+70y0(1) AAS
>>74
よく読んだ方が良いと思う
関数 - AutoHotkey Wiki
外部リンク:ahkwiki.net
76: (ワッチョイ 2fb1-gIrT) 2020/05/06(水)10:08 ID:b7Jl+TQP0(1) AAS
言語仕様酷すぎ
SquirrelとかLuaとかまともなスクリプトエンジン使ったのがあるけど
I/O周りの処理のノウハウに一日の長があるからこっち使うしかないんだよなあ。
自分で作ってみてもALT+F1が拾えないゲームが出て放棄した。
77: (ワッチョイW 2e7e-4oMl) 2020/05/06(水)14:07 ID:E3pRlJgb0(1) AAS
PythonとかJavaScriptからトランスパイル出来たら最高
78
(1): (ワッチョイ bbb1-Geaw) 2020/05/12(火)16:54 ID:E+fH0d4D0(1/6) AAS
たびたびお世話になってます。
LShift短押し(0.5秒以内とか)でSend,a
LShift長押しで本来の機能を持たせたく悪戦苦闘しています。
KeyWaitを軸に、GetKeyState,SetTimer、Loopなどを組み合わせtて試行錯誤しましたが歯が立ちませんでした。
特にKeyWaitが曲者?で、長押し中は定義から解放されず、本来のLShiftに回復してくれないのです。
詳しい方々、どうかよろしくお願いします。
79: (ワッチョイ 8aba-oySJ) 2020/05/12(火)17:26 ID:dy+j9Q/G0(1/5) AAS
>>78
少し上の>>69に長押しと短押しのサンプルコードがあるだろ
まずはそれを参考に自分で書いてみろ
それで上手く行かなかったらその書いたスクリプト貼りな
80
(1): (ワッチョイW d358-U8Dc) 2020/05/12(火)17:38 ID:ckVLw1J00(1) AAS
過去スレとwikiは宝の山
81
(1): (ワッチョイ bbb1-Geaw) 2020/05/12(火)18:21 ID:E+fH0d4D0(2/6) AAS
78です。
これなんかどうでしょう?
初めの数秒間は希望通りの動きをすることもあるのですが、
ほとんどの場合が、LShiftが押しっぱなしのような状態になります。
PCを再起動しないと、押しっぱなし状態が解除されなくなってしまうのです。
希望通りの動きをすることが数秒間あるのは、どういうことなんでしょうか?

LShift::
KeyWait, LShift, T0.5
If (ErrorLevel)
{
省10
82: (ワッチョイ 8aba-oySJ) 2020/05/12(火)18:33 ID:dy+j9Q/G0(2/5) AAS
>>81
{LShift Down}があったら、必ずキーを離した時に{LShift Up}も入れないと
Shift押しっぱなしになるぞ
83
(2): (ワッチョイ bbb1-Geaw) 2020/05/12(火)19:38 ID:E+fH0d4D0(3/6) AAS
78=81です。
82さんのアドバイスに従い、下のように追記したところ上手く機能するようになりました。
ありがとうございました。

しかし、新たな問題が発覚しました。
LShiftを押してから0.5秒以内にマウスクリックやマウスホイール操作をすると、
押しっぱなしにもかかわらず、今度はLShiftが解除されてしまうのです。
LShiftから指を離し、再び押して0.5秒以上を待ってマウス操作を入れると問題ないのですが、
押し直したり厳密に0.5秒が経過するのを待つのはストレスなので、なんとかならないものでしょうか?
キーボード操作の場合は、0.5秒以内であってもLShiftが解除されることはないようです。
よろしくお願いします。
省15
84: (ワッチョイ 8aba-oySJ) 2020/05/12(火)20:22 ID:dy+j9Q/G0(3/5) AAS
>>83
”0.5秒以上押したかどうか”で条件分岐してんだからそうなるの当たり前だろ
0.5秒以内は解除されるんじゃなくてまだShiftがSendされてないだけ
文句があるなら「押した長さ」で分岐するの止めろとしか言いようがない
根本的な使い方から見直しな
85
(1): (ワッチョイ bbb1-Geaw) 2020/05/12(火)20:53 ID:E+fH0d4D0(4/6) AAS
78=81=83です。
キーボード操作の場合は、0.5秒以内であってもLShiftが解除されることはなく、
直ぐにキーボードでキーを送り直すだけですみます。
マウス操作でもキーを送るように設定しているので、マウス操作をやり直すだけで済ませられないかと考えています。
86
(1): (ワッチョイW 5be5-pjQF) 2020/05/12(火)20:55 ID:qx8cyfXk0(1) AAS
根本的な動作要件としてモデファイアキーをチョン押しで何かアクションさせるのは辛いと思うんだ

例えば ~Lshift:: にしてshift 2回押し(ダブルクリック的な挙動)でトリガとかのほうが
キーオペレーションとしてはスムーズに行きそうな気がする
87
(1): (ワッチョイ 8aba-oySJ) 2020/05/12(火)21:03 ID:dy+j9Q/G0(4/5) AAS
>>85
>キーボード操作の場合は、0.5秒以内であってもLShiftが解除されることはなく、

もはやお前の言ってる「解除」って言葉自体が意味不明
キーボードだろうが何だろうが>>83のスクリプトだと0.5秒以内はShiftは押されない
解除も糞も無い
とにかく根本的な操作方法から見直せって
88
(1): (ワッチョイ bbb1-Geaw) 2020/05/12(火)23:16 ID:E+fH0d4D0(5/6) AAS
78=81=83=85です。
>>86
shift 2回押し(ダブルクリック的な挙動)を試してみました。
なかなか良い感じです。
ありがとうございました。
>>87
私の言う「解除」とは、おてつきの後、LShiftを押し直さなけけばならない状況になることです。
おてつきの後、LShiftを離して押し直さなくても、時間が経過したらマウス操作をやり直せばキー送信できるようにしたいのです。
何度も言いますが、キーボード送信ではそれが可能なんです。
よろしくお願いします。
89
(1): (ワッチョイ 8aba-oySJ) 2020/05/12(火)23:19 ID:dy+j9Q/G0(5/5) AAS
>>88
全く意味不明
マウスクリックも一度0.5秒以内にクリックした後そのままshift押しっぱなしで0.5秒経過後にもう一度クリックすれば
Shift+クリックになる

>マウス操作をやり直せばキー送信できるようにしたい
とか突然言われても寝耳に水だしだったらそのスクリプトも書けよ
人に伝えるの下手糞過ぎ
90
(1): (ワッチョイ bbb1-Geaw) 2020/05/12(火)23:52 ID:E+fH0d4D0(6/6) AAS
78=81=83=85=88です。
>>89
スクリプトは83で干した通りです。
その口ぶりから推測すると、83のスクリプトを貴殿のPCで検証したうえで、
私の言う「解除」の現象が確認できなかったということですね?
可能であれば、マウスホイールアップにアルファベットキーをバインドさせ、
「一度0.5秒以内にホイールアップした後そのままshift押しっぱなしで0.5秒経過後にもう一度ホイールアップ」
を試し、shift+アルファベットが送信されるか否かを検証してもらえないでしょうか?
お怒りのところ申し訳ありませんが、もう少々お付き合いくださいませ。
91
(1): (ワッチョイ 6bba-gIXh) 2020/05/13(水)00:21 ID:4vArzUsR0(1/2) AAS
>>90
>マウスホイールアップにアルファベットキーをバインドさせ
だからこの部分のスクリプトも貼れよ
一度言った事何度も言わすな

>お怒りのところ申し訳ありませんが
舐めた口聞いてんなよ池沼
92
(1): (ワッチョイ 0bb1-wHYS) 2020/05/13(水)00:32 ID:yTfMHr2D0(1/2) AAS
78=81=83=85=88=90です。

>>91
これでしょうか?

+WheelUp::
Send,+i
Return
93
(1): (ワッチョイ 6bba-gIXh) 2020/05/13(水)00:38 ID:4vArzUsR0(2/2) AAS
>>92
普通に動作したぞ
Shift押した直後0.5秒以内にWheelUpしても反応しないが
そのままShift押しっぱなしで0.5秒経過後はホイール廻せばは I が入力される
何が解除だか意味不明
94
(1): (ワッチョイ 7f6e-gIXh) 2020/05/13(水)01:56 ID:NTPhoH9M0(1/2) AAS
アプリケーションを起動させて、そのアプリケーションの中のClassNN AAAの表示を待ってからWinMoveを
実行したいのですが、ClassNN AAAの表示を待つ方法がわかりません。
どうすればいいでしょうか?

Run, %Run%, %Run_Dir%, , Run_PID
WinWait, ahk_pid %Run_PID%
95
(1): (ワッチョイ 350a-MjJG) 2020/05/13(水)05:26 ID:div6UgiV0(1) AAS
>>94
タイマーで監視する
外部リンク:pastebin.com
96: (ワッチョイ 0bb1-wHYS) 2020/05/13(水)08:23 ID:yTfMHr2D0(2/2) AAS
78=81=83=85=88=90=92です。
>>93
そうですか・・・キーボード操作と同じ反応ですか・・・
ご検証ありがとうございました大先生。
私も別の環境(別PC、別マウスなど)で試してみます。
97: (ワッチョイ 6b71-uRPb) 2020/05/13(水)13:51 ID:jQ/Lttt80(1) AAS
なんだコイツ
98: (ワッチョイ 7f6e-gIXh) 2020/05/13(水)20:08 ID:NTPhoH9M0(2/2) AAS
>>95
ありがとうございます。
試してみます
99
(2): (ワッチョイ d776-oW4g) 2020/05/20(水)02:51 ID:BnTHvFV20(1) AAS
AltTabでAltキーを離したら
選択したアプリの、画面中央にカーソルが移動する
スクリプトが上手く動きません、、
なにがおかしいのか教えていただきたいです、、

LAlt & Tab::AltTab

KeyWait, Alt
WinGetActiveStats, Title, Width, Height, X, Y
{
MouseMove, Width*.5, Height*.5
}
省2
100
(1): (ワッチョイ ba09-crVl) 2020/05/20(水)03:25 ID:yFj7I/kv0(1) AAS
>>99
まず、
LAlt & Tab::AltTab
このコマンドはこの一行だけで完結してる
なのでそれ以降の行は一切実行されてないのが動作しない原因

そもそもAlt+Tabキーはそのまま使えるのでわざわざAHKで乗っ取らずに
~!tab::
を使いその後の「AltTab」の記述は削除してOK

KeyWait, Alt
の後に一応Sleepを100〜200msくらい入れといた方がいい
省5
1-
あと 902 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.290s*