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/01/15(水) 01:05:32.77ID:P+0SW/PR0
>>170
丁寧にありがとうございます。
色々試行錯誤してみようと思います
2025/01/16(木) 23:17:39.06ID:uInzy8xy0
v1でハッシュのキーの削除って普通どうやるの?

h := {foo:123, bar:456, baz:789}
for i,v in h
  if(i = "bar")
   h.Delete(i)
と書けば行けるけど
h.Delete("bar")だと駄目っぽい
iの型ってなんなんだろうか
2025/01/17(金) 06:09:16.79ID:ZVEBLnPZ0
全角スペース……?
2025/01/17(金) 07:53:50.34ID:c4iWUun20
5chでインデントつけるためだろ
2025/01/17(金) 08:10:42.62ID:2ZdaQM670
>>172
駄目っぽくないが
2025/01/17(金) 12:50:36.35ID:36Bp/RJe0
>>172
普通に消えますよ

h := {foo:123, bar:456, baz:789}
MsgBox, % h.bar "," h.HasKey("bar") ; 456,1
h.Delete("bar")
MsgBox, % h.bar "," h.HasKey("bar") ; ,0
2025/01/17(金) 14:29:32.51ID:SXNaXem00
初心者はv2から使ったほうが絶対にいい
2025/01/17(金) 14:33:45.32ID:dGTSA74W0
v1用のサンプルがたくさん見つかるのが負の遺産だな
2025/01/17(金) 16:22:19.50ID:VjJUxeHq0
v2に書き直す気力がなかなか起きない
コンバーターとかあるのか?
2025/01/17(金) 22:06:02.75ID:YtyJvo5X0
>>179
あるっぽいけど結局手動で書き直さないと駄目とかって、前にこのスレで見たような。
2025/01/17(金) 22:07:20.76ID:dGTSA74W0
ahk使うなら必須技能
そんな大したもんでもない
2025/01/17(金) 23:26:53.32ID:NuvW/Xln0
>>179
こういうのはLLMが強い
うちは移行に3ヶ月かかったよ...
2025/01/18(土) 10:48:24.26ID:f4L2WzXg0
あー生成AIでどうにかなりそうだな
ミスが多いけど全部の言語知ってるプログラマーをコキ使えるようなもんだからな
会社では専用の環境でコキ使ってるわ
プライベートでは試すのも億劫なおっさんだけど
2025/01/18(土) 11:21:53.99ID:sE609x0f0
AHK-v2-script-converter
https://github.com/mmikeww/AHK-v2-script-converter
基本的な文法書き換えの範囲はやってくれる
2025/01/18(土) 11:44:27.96ID:f4L2WzXg0
これはたすかる(やる気なし)
2025/01/18(土) 11:45:18.19ID:f4L2WzXg0
感謝するべきだと頭では分かっている
2025/01/18(土) 11:50:00.65ID:f4L2WzXg0
しかしいい加減Windows10をWindows11にリプレースして
いろんな糞ったれでつまらないトラブルを解決する作業を済ませないといけないように
必要なことではあるのでそのためのツールがありがたいことは間違いないのだが
それでも俺の心は1ミリも震えないのである(ただの無意味なポエム)
2025/01/18(土) 15:38:59.22ID:jCmYV0Zc0
AHKがレジストリエディタ上だと効いてくれないのです
何故ですか?
2025/01/18(土) 15:52:44.09ID:IFRc3ikb0
UACから別の権限で動かしてるけどAHKはユーザー権限、
とかやってるんだろ
2025/01/19(日) 14:44:03.33ID:QkECgsBq0
win10が無料でwin11にできるのはそのうち終わるらしいぞ
2025/01/19(日) 20:49:09.85ID:HhzUII4q0
…何の関係が?
2025/01/23(木) 00:15:06.14ID:6ZVQesKa0
()や「」を入力したら自動でカーソルが真ん中に移動するようにできないですかね?
できればIMEオンオフ関係なくやりたい
2025/01/23(木) 00:19:01.34ID:sldD39Ao0
edgeのリンクのコピーと、リンクをクリックした時の開くをキーでやれるようにしたら快適
マウス必須のUIを設計する意味が判らん
2025/01/23(木) 01:45:33.16ID:QMPLgVGb0
スクリプト作成依頼はダメ
途中でいいから自分で作ったスクリプトを見せてレスをもらうのはいい
2025/01/23(木) 07:33:50.65ID:AagTQ2W80
ウザいマイルール厨がまた湧いてる
2025/01/23(木) 08:02:14.44ID:MRWFiCXh0
何か透明あぼーんが働いてるかな
どこに依頼があったのか見つからない
2025/01/23(木) 21:39:03.13ID:jTkXV6uR0
v2でのMDIのコントロールの取得がさっぱりわかりません
ChatGPTに訊いてもハルシネーションばかりで困っています
参考サイトなどありましたらご教示をお願いします
2025/01/23(木) 21:42:35.50ID:qiOTmtEg0
v1で書くとどうなるの
2025/01/23(木) 21:52:43.60ID:V6rKnoRb0
autohotkey MDI control - Google 検索
https://www.google.com/search?q=autohotkey+MDI+control

で、何か見つかるんじゃねぇの?
2025/01/24(金) 01:31:46.52ID:ufvHkJD60
>>197
公式フォーラムかredditで検索が基本
2025/01/24(金) 16:54:48.29ID:ahvqkTZ70
Redditに助けられたこと・・・、ない!
2025/01/24(金) 17:47:02.05ID:Tw6AG7Rc0
Redditは5chだから5chに助けられたことないということ
5chのAHKスレに来るなw
2025/01/25(土) 18:37:43.03ID:eCw4ff7D0
例のごとく setup.exe の方は Trojan:Win32/Wacatac.B!ml やでと怒られるかもw

Release v2.0.19 · AutoHotkey/AutoHotkey
https://github.com/AutoHotkey/AutoHotkey/releases/tag/v2.0.19
2025/01/25(土) 18:49:33.83ID:m3bNAlk20
fixしかなくて草
2025/01/25(土) 18:54:26.55ID:ZpEnnoF30
開発ブランチという概念は無いからな
2025/01/26(日) 00:18:02.87ID:T6xQ+v7E0
>>203
githugにissueがない
なにかあったときissueをあげようといえない
公式フォーラムにあげようといえる
v2.0.19に15+1つのうち1つのPull requestsしかとりこまれてない
ReleaseのあとにCommitsがあるからつぎのReleaseがある
2025/02/04(火) 14:34:10.89ID:giGxUr2+0
前スレでdataclassとスクリプト間通信教えてくれた人、まじでありがとう!
最初はレジストリに値記録してただけど、読み書きでレジストリ壊れて大変な目にあったのでdataclass用のプロセス作ったら俺の環境だと40msec以内くらいで処理できるようになった!まじでありがとう!
2025/02/06(木) 15:19:45.27ID:/Nk+Ly6y0
UWSCからAutoHotkeyにきたが
まじでいいなこれ Guiも簡単だし WebViewTooとか使えばWindowsだけなら正直一番早くアプリ作れる
2025/02/06(木) 16:00:46.02ID:o4I53aNV0
>>208
UWSCからだったらAutoHotkeyと違いキーリマップに特化してないAutoItってのもいいと思うよ
2025/02/06(木) 19:36:47.62ID:zde19nXk0
用途がかなり違わないか
211名無しさん@お腹いっぱい。
垢版 |
2025/02/06(木) 23:59:11.95ID:4qPR8Osq0
すいません、v1からv2に以降するツール、日本語の注釈がすべて文字化けするのですがどうしようもないでしょうか?
https://images2.imgbox.com/d9/97/8MfK9xf5_o.png

QuickConvertorV2.ahk というものです。

また、こちらでコンバートしてもエラーが出てしまいます。
ワンクリックで現在の日付を入力するものが


!1::InsertDate("yyyy_MMdd_")
InsertText(Content) {
cb_bk := ClipboardAll()
A_Clipboard := Content
Send("^v")
Sleep(100)
A_Clipboard := cb_bk
}
InsertDate(format) {
TIMEv2String := FormatTime(, format)
InsertText(TimeString)
}
Return

ですが機能しません。
https://images2.imgbox.com/6a/d4/w3PKwxeM_o.png

こちら分かる方いませんでしょうか?よろしくお願いいたします。
2025/02/07(金) 00:02:44.48ID:HggB2B0e0
ある程度はツールにやらせてもいいけど、
基本的にはそのくらい自分でもできないとその後が使えないやろ
2025/02/07(金) 00:10:21.20ID:uwAqqtsb0
>>211

わからない理由がわからない…
214名無しさん@お腹いっぱい。
垢版 |
2025/02/07(金) 00:28:13.56ID:PFbhh6eV0
>>213
!1のalt+1のショートカットが悪いと出ていますが、ここをどんなショートカットに変えてもエラーが出てしまいます。
v2のwikiでの模範のものをコピペしてもエラーが出てもう意味不明になっています。
https://images2.imgbox.com/70/c3/ESlJ4KZ0_o.png
vk1D & Z でも出る
2025/02/07(金) 00:30:09.34ID:HggB2B0e0
とりあえず動くものを作るのは簡単なんだよな
でも大抵安定しない
ちゃんと動くようにするのに膨大なノウハウが要る
216名無しさん@お腹いっぱい。
垢版 |
2025/02/07(金) 00:38:26.71ID:PFbhh6eV0
https://qiita.com/DaijiroNozaki-afk/items/925f4cbbe58bf7e139ac

こちらのページのコードを丸コピペしてもエラーが出てしまいます。
https://images2.imgbox.com/9d/83/qdXJNTPS_o.png


::q[[::
{
TimeString := FormatTime(,"yyyyMMdd")
Send TimeString
}

で::q[[::のままでもだめですし別の組み合わせにしてもだめです。
v1のように日付をワンクリックで出したいだけなのにエラーが出続けてしまいます。おわかりの方ご教授お願いします。
2025/02/07(金) 02:30:56.61ID:HGAX6BxI0
>>211
文字コードUTF8にした?BOMありなし2つある
2025/02/07(金) 02:36:04.80ID:HGAX6BxI0
>>211
!1::InsertDate("yyyy_MMdd_")

!1::
InsertDate("yyyy_MMdd_")
にしたらどうなる?
2025/02/07(金) 12:26:19.90ID:uuSqUfJ50
>>216
Errorの概要にある通りです
ホットキー/ホットストリングは関数またはクラスの中では許可されていません
つまり、ahk v2 convert.ahkの89行目は関数かクラスの{}内にあるので動きませんと言う事です

QuickConvertorV2の文字化けについては、とりあえず最新版でなければgithubから最新版をDLしてください
QuickConvertorV2のウィンドウにコピペする際に、クリップボード拡張アプリを使用しているか
クリップボードの内容を随時チェックしているようなアプリが起動しているなら、終了してからコピペしてみてください
そのような物が起動してない場合、一旦メモ帳等に貼り付けてからそれを再度コピペしてみてください
2025/02/07(金) 15:56:55.17ID:4X5h+U6w0
>>216
エラーからするとそのコードの前に関数やクラスの閉じていない書きかけ(と見なされ得るもの)があるんでしょう
89という行番号からしてもその部分だけではないだろうし

まず1つのファイルの中にその5行のコードだけ書いたものを実行してみたら
2025/02/07(金) 21:37:44.39ID:WP1TaeCW0
テストコードは
test.ahkに最小のコードを書いて
対象を
__TEST__.txt ahk_exe notepad.exe
にしてやるといいぞ
2025/02/07(金) 21:44:00.80ID:WP1TaeCW0
あと無理にホットキー形式にしないで
OutputDebugしてDebugView++でキャプチャするとめっちゃわかりやすい
2025/02/07(金) 22:58:40.67ID:Hifxdlug0
こんなペースト太郎に、遭遇しても親切しないほうがいいよ。
2025/02/09(日) 00:17:34.52ID:qAcPaRKR0
AHKとは直接関係の無いことなのですが質問させて下さい。

自分の使っている約1万行のAHKスクリプトを編集しようと、メモ帳や秀丸エディタで開いたところ

今までは瞬間に開けていたのに急に開くのに5〜10秒掛かるようになりました。

そこでPCを再起動(高速スタートアップはオフにしてある)してみたのですが変わりませんでした。(数回試したが同じ)

仕方なく今度はシャットダウン→しばらく放置→起動、とするとなぜかまたメモ帳や秀丸で一瞬で開けるようになりました。

再起動と、シャットダウン→しばらく放置→起動 は何か違いはあったのでしょうか?
2025/02/09(日) 00:19:59.08ID:OVE/Aae60
キャッシュに入ってるとHDDではなくRAMから読むので速い
2025/02/09(日) 04:09:48.88ID:77TrQ7e50
v2ってすべてのArrayに自動で独自メソッド生やせるようになった?
[3,2,1].Sort().Show()
みたいな感じで
2025/02/09(日) 10:55:51.32ID:RNHqEW9L0
>>226
自動で と言うのは分かりませんが独自メソッドは定義できます

Array.Prototype.DefineProp("Sort", { Call: ArraySort })
Array.Prototype.DefineProp("Show", { Call: ArrayShow })
ArraySort(arr, *) {
for v in arr
res .= v "`n"
return StrSplit(Sort(res), "`n")
}
ArrayShow(arr, *) {
for v in arr
res .= v
MsgBox(res)
}

_ := [3, 2, 1].Sort().Show() ; 123

[3, 2, 1].Sort().Show() をそのまま記述すると有効なアクションとは見なされないので
上記のように式中に含めるか、一度変数に代入し arr.Sort().Show() のように必要があります

この手のライブラリなら公式フォーラムとGithubにいくつかあるので必要なら探してみてください
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を含むフックユーティリティ側も管理者権限で動作している必要がある
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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