AutoHotkey スレッド part35

2024/12/11(水) 12:17:01.35ID:pfy66vhl0
■公式サイト
https://www.autohotkey.com/

■解説等
・v1.1
AutoHotkey Wiki
http://ahkwiki.net/Top

・v2
クイックリファレンス|AutoHotkey v2
https://ahkscript.github.io/ja/docs/v2/
v1.1からの変更|AutoHotkey v2
https://ahkscript.github.io/ja/docs/v2/v2-changes.htm

■前スレ
AutoHotkey スレッド part34
https://egg.5ch.net/test/read.cgi/software/1719681136/
2025/02/10(月) 02:14:17.68ID:ZLtTGvar0
>>227
ありがとう
v1だとすべてのArrayインスタンスのbaseを書き換えるという面倒なことが必要だったけど
だいぶ便利になりそうだな
2025/02/10(月) 20:02:02.03ID:+gzUMK3l0
VIA対応キーボードにしたらリマップから簡単なマクロまで組めるからahk卒業しそうだわ
これまでありがとう
2025/02/10(月) 20:25:56.35ID:e6xOcmLT0
>>229
VIAって何がいいの?

設定が簡単なだけ?
2025/02/10(月) 20:57:12.50ID:+gzUMK3l0
>>230
一番のメリットはキーボードに直接書き込むのでフック特有の不安定さがないしPCを変えても変更が維持されるしBIOSでも使える
例えばcapsとctrlを交換しても誤認識されることは100%ないし単打ち長押しで修飾キー押しっぱなしも起こらない
2025/02/10(月) 21:14:42.73ID:C6SBR5hu0
BIOSを除外すると、VIAでできることはレジストリでできるのでは
2025/02/10(月) 22:18:58.56ID:gnORNCJm0
何を言っているのか分からない
2025/02/11(火) 01:34:14.15ID:eXxkRJ6N0
VIA対応キーボードの簡単なマクロって本当に簡単なマクロでHELLOくらいじゃねーかwww
ahkは本当に複雑なプログラムが書けるから単なるリマップと違う
時間を損した
2025/02/11(火) 08:16:32.06ID:i0v4lAOV0
>>229
さよなら
もうこなくていいぞ
236名無しさん@お腹いっぱい。
垢版 |
2025/02/11(火) 14:03:25.85ID:TcJ4A/SL0
>>218
UTF-8のBOM付き、ありでもどちらでも駄目でした。

https://i.imgur.com/loofcAc.png
https://i.imgur.com/ltSCJVq.png

1行にショートカットだけ記載していますがそこだけエラーが出ます。
https://qiita.com/DaijiroNozaki-afk/items/925f4cbbe58bf7e139ac(こちらのものをコピペ)

なぜなんでしょうか・・。途方に暮れています。
237名無しさん@お腹いっぱい。
垢版 |
2025/02/11(火) 14:14:11.59ID:TcJ4A/SL0
また、ボタンを押しっぱなしにしたときにツールチップで出すものもv2ではエラーが出てしまいます。
https://i.imgur.com/7spFDBd.png

エラーがこんな感じで出てしまい、v2への変換では駄目、ネットでv2での押しっぱなしを表示するスクリプトを探してもヒットしません。
https://i.imgur.com/Y4UL2rS.png
こちらv2でも再現可能でしょうか?
2025/02/11(火) 14:25:50.61ID:hvrdtsnx0
>>236
あなたが>>211
「すいません、v1からv2に以降するツール、日本語の注釈がすべて文字化けするのですがどうしようもないでしょうか?」
と言ったことの解決策で「UTF-8のBOM付き、あり」と言った
>>237の画像は日本語が文字化けしてないから駄目ではなく解決してると思った
駄目だ駄目だと言ってあなたはネガティブすぎる
なぜだなぜだと聞く前にあなたは自分で考えなければならない
2025/02/11(火) 14:44:57.82ID:hvrdtsnx0
::q[[::
{
TimeString := FormatTime(, "yyyyMMdd")
Send TimeString
}
はv2だが、
v2を、v1からv2にconvert(変換)しようとしてない?
2025/02/11(火) 14:58:44.74ID:hvrdtsnx0
v2は%なんか使わない
%A_LoopField%はA_LoopFieldにしてみれば?
241名無しさん@お腹いっぱい。
垢版 |
2025/02/11(火) 15:03:55.48ID:TcJ4A/SL0
>>238
すいません。文字化けはVSCODEに入れて文字コードを変更すると直りました。
ありがとうございます。
UTF-8に直すのは文字化けの方ではなく、エラーが治る可能性があるのでコードを変えたほうがいい、という意味と思っていました。
242名無しさん@お腹いっぱい。
垢版 |
2025/02/11(火) 15:06:54.31ID:TcJ4A/SL0
>>240
%A_LoopField%をA_LoopFieldにしてみました。
https://i.imgur.com/558etmP.png


;押され続けていることをツールチップで知らせる対策
#SingleInstance
Persistent
keys := "Ctrl|Shift|Alt|LWin|RWin"
alertDur := "3000" ;(ms)
SetTimer(Alerter,200)
return
Alerter()
{ ; V1toV2: Added bracket
global ; V1toV2: Made function global
alert := ""
Loop Parse, keys, "|"
{
A_LoopField := !GetKeyState(A_LoopField) ? 0 : !A_LoopField ? A_TickCount : A_LoopField
alert .= (A_LoopField && (A_TickCount - A_LoopField) > alertDur) ? "[" A_LoopField ": " (A_TickCount - A_LoopField) "ms]" : ""
}
ToolTip(alert)
}
2025/02/11(火) 15:28:50.18ID:yC9vFMMi0
>>231
まあ、
簡単なリマップなら良さそうだね
2025/02/11(火) 15:33:13.87ID:3hmxavYH0
>A_LoopField := !GetKeyState(・・・
v2って組み込み変数に代入できんの?
2025/02/11(火) 15:42:33.64ID:1w0YfMSU0
v2エキスパート様の指示に従っただけだろ
2025/02/11(火) 18:14:03.80ID:Anqf/YPY0
>>244
A_LoopField はできるかどうか知らんけど(多分できないっぽいけど)、A_Index はできる。
2025/02/11(火) 22:38:08.90ID:Hb9fTKS90
今でもインデックス見たかったらA_Indexが必須なんだっけ?
2025/02/12(水) 07:50:00.61ID:ZgbeZc7Z0
>>247
わざわざ自前でループカウンタの管理をする必要性も感じないし、A_Index で良いんじゃね?
A_Index に代入するのは、例外処理等でループを終了させたいときとかやろ。
公式のリファレンスにコード例があるで。
2025/02/12(水) 09:00:17.26ID:/0lqAyhh0
keys := StrSplit("Ctrl|Shift|Alt|LWin|RWin", "|")
for i,v in keys
自分ならこうだな
最初にばらした方が速いしloop構文キモイ
250名無しさん@お腹いっぱい。
垢版 |
2025/02/12(水) 15:46:40.17ID:Y+gunsEw0
loop使わないなら最初から配列かオブジェクトでいい気がする
|区切りって配列が面倒くさかったころの古いノウハウだし
2025/02/12(水) 16:02:21.54ID:NzbvN+Ov0
互換性なんかなくなっていいからまともな文法にするべきだな
2025/02/13(木) 14:21:52.11ID:l8L1M8QT0
nirsoftがなんか便利なの作ってた
https://www.nirsoft.net/utils/gui_prop_view.html
2025/02/13(木) 14:49:05.75ID:GRxp5KCl0
GUIでなくてよくないか
2025/02/13(木) 17:13:32.64ID:GoXVam/80
>>252

どう便利なの?
2025/02/13(木) 17:31:43.66ID:GRxp5KCl0
powershellなら1行で書けそうなんだよな
2025/02/13(木) 17:33:53.01ID:GRxp5KCl0
最前面に表示させときたいアプリがあって
ahkがあれば簡単だけど会社のPCなので、
powershellでできないか頑張ったけど無理だった
似たようなことしてるサンプルを丸コピーしても無理
なんでこんなにハードル高いのか意味判らん
2025/02/13(木) 18:03:56.17ID:2nd5jquI0
>>254
各ウインドウのハンドルとかIDとかポジションとか調べられるし、操作もできる
2025/02/14(金) 19:46:49.55ID:q8lgCfFr0
edgeの開くを押すのが面倒だから自動で押せるようにしてたのに、
また体裁が変わった
2025/02/14(金) 19:51:40.41ID:YyCUWdwR0
>>257
ほう

便利そうだな
2025/02/15(土) 01:11:26.59ID:DYvmQeHk0
ChatGPTの4oはAutohotkey v2に対応してるな
ほかのAIはv1ばっかり吐き出すけど
v1使ってる奴は早くv2に移れ
2025/02/15(土) 01:18:10.82ID:kEdiDzx00
本質的には同じものだけどな
#HotIf とかやってるうちは駄目言語
2025/02/15(土) 01:18:30.40ID:qt9FyMqY0
>>260
そうなんだ

すごいな
2025/02/15(土) 01:20:01.98ID:kEdiDzx00
そんなのはプロンプト次第なんじゃないの
2025/02/15(土) 01:47:08.95ID:1axxHHEe0
v2と指定するとちゃんと出るよ
プロンプト次第
265名無しさん@お腹いっぱい。
垢版 |
2025/02/17(月) 09:55:33.58ID:FDdHecw20
ファイラとautohotkeyとeverythingを使ってるんだけど、
ファイラを一般権限で使っているときは、問題なくautohotkeyが使えて、everythingが立ち上がるんだけど
ファイラを管理者権限で使うとautohotkeyが効かない。

everythingは管理者権限で使わない方が良いと聞いたんだけど、autohotkeyは管理者権限で使った方が良い?
2025/02/17(月) 10:12:48.10ID:gEkt2cE80
好きにしろ
2025/02/17(月) 11:31:50.84ID:5RYThf6i0
autohotkeyと一緒に使えないものは捨てよ
ここはautohotkeyのスレだぜ?
2025/02/17(月) 13:29:16.89ID:gEkt2cE80
度々スレに現れるけど、
管理者権限で動いてるアプリをユーザー権限で参照できるって発想どこからくるんだ
269名無しさん@お腹いっぱい。
垢版 |
2025/02/17(月) 15:27:48.69ID:FDdHecw20
いや、アプリを参照するんじゃなくて、管理者権限アプリが動いてるときに、AHKの入力を受け付けて欲しいだけなんだが
2025/02/17(月) 15:52:55.63ID:QWE5ghZB0
管理者権限で動作中のアプリに対する入力をフックするには、AHKを含むフックユーティリティ側も管理者権限で動作している必要がある
2025/02/17(月) 16:35:26.07ID:WjFufKt+0
管理者権限で動作しているアプリに一般のユーザー権限で手出しできたら
何のための管理者権限なんだよ
2025/02/17(月) 16:48:05.83ID:rOBUJ2Ye0
管理者権限で動くレジストリエディタをAHKで動かそうと思ったことがない
危険すぎだろ
回答できる人は限られる
2025/02/17(月) 17:08:01.07ID:6CIfxxzh0
何せ外部プログラム呼び出しで対象ファイルパスをわざわざAHKでタイトルバーから取得する一つ覚えバカが居るからな、同類だろ
2025/02/17(月) 19:43:59.25ID:0BllEUa70
>>269
だから好きにしろと書いた
管理者権限のAHK動かせば実現はできるけど、
実現すべきか、実現させて良いかは別の問題だから
2025/02/18(火) 17:36:12.36ID:CZy4LqK60
> 整合性レベルは『System (システム)』『High (高)』『Medium (中)』『Low (低)』『Untrusted』の 5 つのレベルから成立
> DACL や SACL でアクセス制御が可能なオブジェクトにはファイルやフォルダ、レジストリ以外にも、プロセスやスレッド、名前付きパイプなど様々です。
> ://milestone-of-se.nesuke.com/sv-basic/windows-basic/user-access-control/

整合性レベルの低いプロセスは整合性レベルの高いプロセスにアクセスできない
2025/02/18(火) 17:38:26.51ID:CZy4LqK60
> 整合性レベルは"Process Hacker 2" というツールで見ることができます。

見てみれば?
2025/02/18(火) 22:27:10.25ID:zm7/tA/j0
>>256
PowerToysのはだめなのか?マイクロソフトのオマケだから言いくるめれば通してもらえるだろ
2025/02/18(火) 22:48:54.21ID:ohEE9APM0
>>256
これでウインドウ一覧が出てきて選択したら出来たよ、一般ユーザ権限で
github
bkfarnsworth/Always-On-Top-PS-Script/Always_On_Top.ps1
2025/02/24(月) 19:21:37.94ID:cx595oH00
ときどきEscが押しっぱなしになるが、
Autohotkeyのせいだろうか?
2025/02/24(月) 19:34:41.39ID:b+sETp4H0
どのキーがどのタイミングでおしっぱになるのかを一生探り続けるのが
Ahkerにかけられた呪いなのじゃ
2025/02/24(月) 19:43:49.73ID:ue8qJj0u0
CapsLockしてると誤動作するのは何故だろう
282名無しさん@お腹いっぱい。
垢版 |
2025/02/25(火) 01:34:51.17ID:4kcvCrrR0
capsとひらがなキーは付近のキーとむちゃくちゃ押し間違えるのでけっきょく無効化してるなあ
プログラマブルキーとして活用しようとしたこともあるけど誤爆が多くって
2025/02/25(火) 15:10:27.16ID:aouLTwUW0
capsはIME offにしてる
2025/02/25(火) 15:58:08.32ID:rkNruriR0
>>283
コピー「Ctrl」+「C」、切り取り「Ctrl」+「X」、貼り付け「Ctrl」+「V」は左右どっちのCtrlを使う?
または使わない?
2025/02/25(火) 16:01:35.10ID:jvEssBto0
>>284
片手で操作するから左使ってる
2025/02/25(火) 16:08:37.72ID:G3J8Os+k0
両手を使う作業中 (文章入力中など) なら右、それ以外は左
2025/02/25(火) 18:37:47.51ID:6FufuVdr0
そこらへんは
無変換+ASDでやってるな
クリップボードフィルタかまして
amazon URLのゴミ除去とかの処理を仕込んである
無変換+Cでクリップボードスタックモード突入
2025/03/04(火) 18:20:45.74ID:CLWSjdvG0
LButton::
{
Send {"LButton"}

while GetKeyState("SC07B", "P") {
Send "{LButton}"
Sleep 100
}
}

AHKv2で無変換キーを押している間のみ左クリック連打ですが
無変換キーを押していない間の左クリックの挙動をAHKを使用していない時の挙動にすることってできますか?
今の状態だと左クリックが一回押されるだけなのでスクロールバーをスライドさせるようなことができません
whileのelseに自分で挙動をそれっぽく実装するしかないでしょうか?
2025/03/04(火) 19:12:51.93ID:6hhStZY90
>>288
"~" でいけるんじゃない?
Hotkeys - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Hotkeys.htm#Symbols
2025/03/04(火) 19:58:54.95ID:CLWSjdvG0
>>289
できました!ありがとうございました!
2025/03/04(火) 20:05:29.14ID:jOIIc3M20
なんかトリッキーな回避がいろいろあって、完全には上手く行かないんだよな

yamyだともっとシンプルな記述でもっと安定して動いてたのに
より何でもできるように自由度を上げて不安定化しとるのでは
292名無しさん@お腹いっぱい。
垢版 |
2025/03/05(水) 01:07:37.45ID:fwg4HQDg0
v1からv2の以降が出来ないのですがどなたか分かる方いないでしょうか?v2を自動に変換するツールでも出来ませんでした。

;;;win [ でエクスプローラ
#WinActivateForce
#[:: ;ショートカット
IfWinNotExist ahk_class CabinetWClass ;存在しない時
Run, explorer.exe ;エクスプローラを起動
else ;または
IfWinActive ahk_class CabinetWClass ;エクスプローラのクラスがある時
{
Send, ^t ;ショートカットを送信
return
}
IfWinExist ahk_class CabinetWClass ;裏にある時
WinActivate ;アクティブ

Return

-----------------
こちらですが、v2で同じような動きをするにはどうすればいいのでしょうか・・?
よろしくお願いいたします。
2025/03/05(水) 01:46:29.14ID:dYTI062z0
AIに変換してくださいと言ったら一瞬で返したのがこれ
これを見てv2の文法がわかるから後はどうにでもなるんじゃね?
AIに聞いてそれでもわからないなら人に聞けと思った
;win [ でエクスプローラ
#WinActivateForce
#[
{
;存在しない時
if !WinExist("ahk_class CabinetWClass")
{
;エクスプローラを起動
Run("explorer.exe")
}
;または
else if WinActive("ahk_class CabinetWClass")
{
;ショートカットを送信
Send("^t")
}
;裏にある時
else if WinExist("ahk_class CabinetWClass")
{
;アクティブ
WinActivate
}
}
2025/03/05(水) 02:40:25.80ID:uR3oeFhp0
>>292

わからない理由がわからない…
2025/03/05(水) 14:01:34.91ID:8CSojxnP0
>>294
知りすぎたんだよ

何も知らない頃を思い出せ
296名無しさん@お腹いっぱい。
垢版 |
2025/03/06(木) 00:33:36.25ID:N4qO1bc40
>>293
AIでもやってますしv1→v2コンバーターも使っています。それでもエラーが出るんです
>>293をコピペしてもエラーが出て駄目です。
https://i.imgur.com/sgYAkcU.png
https://i.imgur.com/Jy61eqZ.png
297名無しさん@お腹いっぱい。
垢版 |
2025/03/06(木) 00:36:53.80ID:N4qO1bc40
ああ理解できました・・。
#[のあとに::が無かったんですね 失礼しました
ホントありがとうございます
2025/03/11(火) 13:45:22.75ID:i3TG704M0
windows11搭載の仮想デスクトップで、それぞれのデスクトップで同じ常駐アプリ(複数ウィンドウが起動できるタイプ/everything)を起動したいんだけど、何か良い方法ある?

単純起動させると最初に起動したデスクトップに飛ぶんだ

1)ABCと仮想デスクトップがある
2)Aでxを起動する
3)Cでxを起動する
4)Cで表示せずAに移動して開く
2025/03/11(火) 14:48:09.84ID:am18KQ820
>>298
【このウィンドウをすべてのデスクトップに表示する】
2025/03/11(火) 16:49:04.98ID:i3TG704M0
>>299
全部のデスクトップに開いてても「最後にアクティブにしてあったアプリウィンドウのあるデスクトップに飛んでしまう」んだ
それがCで開いててもAに移動する(4)という意味

「現在表示しているデスクトップでアプリを開く」をやりたいんだけど何か良い方法がないだろうか
煮詰まってて何も浮かばない
2025/03/11(火) 16:58:04.26ID:i3TG704M0
ごめん、いけた

[このアプリのウィンドウをすべてのデスクトップに表示する]の方でやったら希望通りの動作になった

いけたけど全部のウィンドウに引数含めて起動する
別々に認識してほしい(個別に起動しててアクティブにしてから開くと別ウィンドウ扱いになってる
2025/03/11(火) 17:26:55.97ID:e44McFqy0
>>301
単一インスタンス制御しつつ仮想デスクトップAwareなアプリ(ブラウザなど)と同じ動作にするには
アプリ自体が仮想デスクトップAware対応してないと無理
2025/03/11(火) 19:06:01.66ID:lUvZNH0p0
>>300
煮詰まってるのに浮かばないの?
2025/03/11(火) 19:11:53.43ID:WwtIacNF0
>>301
DetectHiddenWindows(false)だったらWinExistが現在のデスクトップだけになるっぽいのであとは条件分岐でできたよ
2025/03/11(火) 20:36:03.74ID:i3TG704M0
>>303
煮詰まったら浮かばないでしょ
浮かべる液体ないんだし

>>304
隠しウィンドウを操作するのね
1.1だからonoffになるけど調べてやってみる
ありがとう


ahk_pidはどの仮想デスクトップ上のアプリで同じ数字なのが気になるけどそれが>>302という事なんかな
調べてやってみる
2025/03/11(火) 20:37:30.15ID:Ggp+fzlU0
煮詰まってるってのはもうじき解決する状態のことで行き詰まってることじゃないぞ
307304
垢版 |
2025/03/11(火) 22:03:00.48ID:WwtIacNF0
>>305
>>301に返信したから勘違いさせちゃったね
[このウィンドウをすべてのデスクトップに表示する]だと同じプロセスになるから、チェック外した状態でやったよ
2025/03/12(水) 04:51:12.35ID:nxWFd+4b0
Firefoxで一番左のタブがアクティブかどうかチェックする方法ない?
ウィンドウタイトルはNGで

白い枠があるかどうかでピクセルチェックするしかないのかな
2025/03/12(水) 07:57:39.00ID:ZVlucI4O0
>>305
煮詰まるって料理の完成、転じて結論を出せる状態になることだぞ
2025/03/12(水) 08:21:29.21ID:xNtEjOPh0
>>308
UIA.ahkに付属のUIA_Browser.ahkを使って
すべてのタブ名の配列取得と現在のタブ名の取得するとかはどう?
速度はピクセルチェックやFindText.ahkの方が速いね
2025/03/12(水) 12:55:28.76ID:ixo1lYdP0
>>306
>>309
最近は「時間経過するばかりで、もうこれ以上新たな展開が望めない状態になる」って意味の方で使われる事も多い
2025/03/12(水) 13:03:18.88ID:ZVlucI4O0
>>311
そへは行き詰まるの誤用
無知を誇るな
2025/03/12(水) 13:15:25.34ID:ixo1lYdP0
誇ってるんじゃなくてその誤用がもう普通に使われてるって話
2025/03/12(水) 14:39:27.62ID:7RZNjUkJ0
てか元の意味もそれが誤用されてることもよく知られてるのに
無知なのはそれをわざわざツッコんでくる>>309では
2025/03/12(水) 15:10:54.49ID:2U5Adhnx0
よく知られてるのに誤用の方で使い続けるのってどういう心理?
2025/03/12(水) 16:05:18.16ID:ixo1lYdP0
元々の意味はこうだよと言われて元に戻った言葉ってどれだけあったっけ?
2025/03/12(水) 16:19:25.15ID:6x3suL6M0
>>315
>>316
うざい質問するな
2025/03/12(水) 16:22:40.43ID:2U5Adhnx0
>>316
それ訊いて何か意味ある?
誤用とされてきた語が辞書で第一義になった言葉ってどれだけあったっけ?
2025/03/12(水) 17:45:00.05ID:ModylEss0
2chで誤用に突っ込むのは野暮だよ
言葉なんてそんなもんなので、必ず突っ込んだ方が負ける
2025/03/12(水) 18:47:17.65ID:ixo1lYdP0
>>318
第一にはならんけど排除することはもうできないってだけ

今はどっちでも良いってなってる「汚名を挽回する」を間違いだってずっと言い続けてたら良いよ
2025/03/12(水) 18:53:01.11ID:2U5Adhnx0
>>320
汚名を挽回するは間違いじゃないよ
間違いならば疲労を回復するも間違っていることになる
そもそも汚名を挽回するも汚名を返上するも同じ意味として使われるが、
煮詰まるは正反対の意味に捉えられかねられないので、
誤解が多いと分かって使うのは要するにバカ
2025/03/12(水) 18:54:45.55ID:ModylEss0
誤用を見つけて、本来の意味を知ってることを自慢したいと思っても、
目的が自慢なのでどうやっても角が立つ
そして、多くの場合誤用側が多数派なので数でも論理でも勝てない上に、
自慢しにきた鼻持ちならない奴なので、必ずいじめられる羽目になる

誤用の指摘はしない一択
2025/03/12(水) 19:12:13.35ID:2U5Adhnx0
なるほど、自慢だと思ってるのか
そりゃ素直に聞き入れる気にならないわけだ
2025/03/12(水) 20:33:33.33ID:/8CnmrPW0
偽情報の拡散が問題になってるのを知らない?
誤用を指摘すべき
偽情報を拡散するのは楽だが誤用を指摘するのは頭が疲れる
本当ならやりたくないこと
2025/03/12(水) 20:38:51.78ID:/8CnmrPW0
誤用を指摘するコツはレスバにならないように1レスで完結させること
今回はレスバしたかったんじゃない?
穴が空いたような指摘で泥沼になった
2025/03/12(水) 21:14:50.90ID:7RZNjUkJ0
自慢のつもりで世間知らず晒してるなら世話ないわな
2025/03/12(水) 21:17:51.46ID:ixo1lYdP0
>>323
言われてる方だぞ
レスを投稿する

大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

ニューススポーツなんでも実況