AutoHotkey スレッド part33

■ このスレッドは過去ログ倉庫に格納されています
2024/01/23(火) 16:30:58.38ID:VpJPb0gB0
■公式サイト
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 スレッド part30 IDのみ
https://egg.5ch.net/test/read.cgi/software/1644313099/
2024/01/23(火) 19:27:40.61ID:FnsvWRx00
>>1
2024/01/24(水) 01:41:47.32ID:T3tCzO230
>>1
1乙
2024/01/24(水) 05:56:14.39ID:pxFSyCzv0
>>1


まだまだv1.1使ってる人いるしWikiの方は古いからこれも有った方が良いんでない?
英語だけどv1とv2のReferenceがワンタッチで切り替えられるからv1からv2への移行にも役立つと思う

Quick Reference | AutoHotkey v1
https://www.autohotkey.com/docs/v1/
NGNG
あぼーん
2024/01/25(木) 09:24:50.14ID:GOgjMqwJ0
次スレ立つ前に埋めるバカってもう手遅れなの?
7名無しさん@お腹いっぱい。
垢版 |
2024/01/25(木) 11:16:52.55ID:uinKnG8v0
生まれてきた時点で手遅れだよ
2024/01/27(土) 04:38:11.88ID:OYYfCLct0
一気にv2に移行するの大変だから
別にインストールしてv1と共存させておくことってできる?
2024/01/27(土) 07:54:52.45ID:I7ixFwtU0
普通にできる。V2インストールの段階でそういう選択肢が出てくる。
2024/01/28(日) 17:38:09.93ID:CFvYYNxZ0
>>1
以前スクリプトかなんかで埋められた時スレ立てられなかったから無事復活してなにより
2024/02/03(土) 02:32:48.04ID:IMR03lFg0
解決法が分からなかったからホットキーを総当たりにしてゴリ押し解決したでござる

上手い人なら5行とかで終わるであろうものを150行くらい書いた

動作問題ないし思い通りに動いた 嬉しい~~~
2024/02/03(土) 07:48:58.75ID:LhSpej1Q0
忘れた頃に変な副作用出そう
2024/02/05(月) 21:14:34.37ID:ihl53dSU0
>>12
上手くなった未来の自分に託した(キレながら作業していそう)
2024/02/05(月) 22:07:05.15ID:c+A6I04o0
キーを長押ししないと反応してくれないパターンがあるアプリがあるんだけどどうしたら良い?

スクリプトの中身は単純に↓の1行だけ
a::Send('{F1}')

長押ししないと反応しない右辺のパターン
・ファンクションキー全部
・MouseClickのLeftとRight
・Escキー

正常に反応する右辺のパターン
・MouseClickのWheelUpとWheelDown

Sleepも試したけど効果無かった
2024/02/05(月) 22:42:57.45ID:AkVUYdXx0
setkeydelay
16名無しさん@お腹いっぱい。
垢版 |
2024/02/06(火) 06:10:42.05ID:zlCqbpOK0
d長押しでCTRLキーを設定している。
この状態でwin+dが反応しないんだけどどうしたらよい?

;;長押し割り当て
*d::
Send {Blind}{LCtrl DownTemp}
return
*d Up::
Send {Blind}{Ctrl Up}
If (A_Priorkey=="d"){
Send {d}
}
return
2024/02/07(水) 11:48:53.47ID:BNBk3/1R0
Chromium系のブラウザでアドレスバーの文字をコピーすると
ClipboardChangeが2回呼ばれるみたいで困ってるんだけど、おま環?
なんとか1回しか通さないようにできないものか
2024/02/07(水) 17:24:34.50ID:DnEjmR7K0
txt1〜の変数に文章を格納してこれをToolTipで各変数ごとに改行、複数行で表示させたいと思い

ToolTip txt1 `ntxt2 `ntxt3

としたところすべて一行で表示されてしまいました
どうすれば改行し表示されるようになりますか?
2024/02/07(水) 18:42:28.48ID:LvdfwSaP0
>>14
>>15の指摘通りSetKeyDelayを試してください。ただし、v2はデフォルトのSendモードがInputになっているため
そのままではSetKeyDelayが効かないので、SendMode("Event")を指定するか、Sendの代わりにSendEventを使用してください


>>16
単純にホットキーの*を外してください。そうしてしまうと他キーとの組み合わせで影響が出る場合は
ホットキーとして#d::を追加し、#dをSendすると共にフラグをたて、*d UpでdをSendしないように判定を入れ、フラグを消す


>>17
まず、コピーする際の動作(Ctrl+cなど)で他のホットキーや他の常駐アプリのショートカット等が発動してないか確認してください
その他の原因として思い当たるのはコールバックを重複して登録している可能性があります
また、v1でラベル式のOnClipboardChangeを使用している場合は、スクリプト起動時にも無意味に発動するので
その辺りも考慮したコーディングをしてください。それ以外ならコード見ないとなんとも言えません

別の方法としては、2回呼び出しが起こるものと断定し、コールバック関数の方でクリップボードの前の内容を変数にキープしておいて
同じ内容ならなにもせずreturnするとかしておく方法もあります


>>18
v1なら ToolTip, % txt1 "`n" txt2 "`n" txt3
または ToolTip, %txt1%`n%txt2%`n%txt3%
v2なら ToolTip(txt1 "`n" txt2 "`n" txt3)


あと、皆さんv1かv2かぐらいは書いといてください
2024/02/07(水) 19:18:02.49ID:DnEjmR7K0
>>19
すみませんv2です
ありがとうございます出来ました
210016
垢版 |
2024/02/09(金) 07:17:34.49ID:tdwV/Yte0
>>19
アドバイスありがとうございます。
0016です。
win+d動作しました。
ですが、※を外すと、CTRLキーが押されっぱなしになってしまいます。
v1です。
2217
垢版 |
2024/02/09(金) 19:51:14.43ID:TlIRmc760
>>19
アドレスバーだけしかならないしスクリプト最小限にしても同じだからChrome側の問題のような気がしてる

なのでとりあえず
>前の内容を変数にキープしておいて同じ内容ならなにもせずreturn
これで対処することにします。ども
2024/02/11(日) 23:48:06.21ID:5c25RQBT0
キーの指定でvk○○だとエラーが出るんですがなぜでしょうか(sc○○では大丈夫)
1.1.37.01です
2024/02/12(月) 00:26:10.06ID:290Vlkp20
>>23
それだけの情報だと何ともいえない。
実際のソースとか、エラーのスクショとか。
2024/02/12(月) 05:46:59.18ID:E8Ir8oKs0
>>23
AHKファイル読込時に、何行目がエラーなのか表示されてない?
2024/02/12(月) 11:47:58.12ID:EprOlHxI0
すみません、確認したらエラーが出るのは「vk○○sc○○」とつなげて書いたときでした
vkのみ、scのみならエラーが出ません
なんかだいぶ前の更新でこの書き方は駄目になったそうですね…
2024/02/14(水) 19:54:18.85ID:jMLz7Vo+0
マニュアル読んでたらv2ってseed入れた疑似乱数作れなくなってたのか
なんか良い代用方法ないかなぁ
2024/02/15(木) 06:59:13.36ID:Rd7uFc2Q0
seedに依存した再現性のある疑似乱数列が欲しいんだとしたら
質を気にしないなら、線形合同法をwikipediaとかの短所の説明を読んで実装するのが簡単だと思う
質が必要ならいろいろあるんで疑似乱数で検索してみて

もし同じ出力になるのを心配してるなら、RandomはRtlGenRandomを呼んでるみたいで
https://en.wikipedia.org/wiki/CryptGenRandom
によるとGetCurrentProcessID, GetCurrentThreadID, GetTickCount, GetLocalTime, QueryPerformanceCounter
とかでいい感じになってるらしいんで気にしなくてもいいみたい
2024/02/15(木) 20:04:16.47ID:yNUglGyv0
>>28
組む手間省略出来るなら使おうかと思ってただけなんだ
ありがとう、やっぱ無いなら組まないといかんよね
30名無しさん@お腹いっぱい。
垢版 |
2024/02/17(土) 01:22:17.31ID:ztG2f5Qz0
本末転倒
覚悟出来たか?
2024/02/17(土) 01:23:30.07ID:G57Rr8lw0
>>6
無理してない
32名無しさん@お腹いっぱい。
垢版 |
2024/02/17(土) 01:23:50.07ID:2tzVNVy50
信者が朝から出動するスレか
マジで明日上げんじゃねーの?
2024/02/17(土) 12:56:19.64ID:yswOq45Q0
GOM Playerという動画再生ソフトで総再生時間と経過時間は表示されるのですが
残り時間が表示されないためAHKで残り時間を取得して表示させたいのですが何かよい方法はないでしょうか

自分が考えたのは
@OCRで画面上の総再生時間と経過時間を読み取り引き算して残り時間を取得

AGOMのメモリ内の総再生時間と経過時間を読み取り引き算して残り時間を取得
AHKからプロセスメモリエディタのような複雑なことは出来る?

ぱっと考えただけでも自分のスキルでは無理そうなのですが何かよい方法はないでしょうか
2024/02/17(土) 14:34:01.17ID:bSDNcPvm0
>>33
オレ環に入れてるプレーヤー → mpc-hc・VLC・mpv は全て「再生時間」のところクリックすると切り替わって残り時間表示してくれるけどなー
ゴムはそうなってないのか?

>自分のスキルでは無理そうなのですが…
ahkで何とかする方法はおれは分からんけど、この機会にプレーヤー乗り換えるかそのまま我慢して使い続けるかどっちかにした方が良いような気がする
2024/02/17(土) 20:15:26.04ID:yswOq45Q0
>>34
GOMは「再生時間」のところクリックしても何も起こりません

この際プレイヤーを変えてみる事も考えているのですが mpc-hc・VLC・mpv の中で
現在の再生速度を画面に常に表示しておけるものはありますか?
2024/02/18(日) 01:52:32.46ID:hXlJtIKd0
かなり昔にahkスレでmpv教えてもらったな。あいがとう当時のおっさん
面倒くさいけどlua覚えたよ
2024/02/18(日) 20:38:08.51ID:C98TabMg0
Luaなんか何に使ってたんだ
2024/02/19(月) 09:50:25.92ID:dq0vnJ5b0
mpvのconfigや制御がluaなのよ
Rainmeterもluaなので助かった
postmessage経由でahkとも相性が良い
2024/02/20(火) 21:59:56.96ID:gDbz9l5/0
配列で、例えば
my_list := [13, 4, 8]
を初期化したい場合、
my_list := []
ってやったらメモリリークする?

他に方法ある?
2024/02/20(火) 22:40:00.31ID:2f/D4TF30
>>39
Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm
> A variable cannot be explicitly deleted, but its previous value can be released by assigning a new value, such as an empty string:

Variables and Expressions - Definition & Usage | AutoHotkey v2
https://www.autohotkey.com/docs/v2/Variables.htm#cap
> The memory occupied by a large variable can be freed by setting it equal to nothing, e.g. var := "".
2024/02/21(水) 14:37:49.43ID:piaLdJEi0
GUI,ADDでSECTIONを設定した場合、以降に配置されたコントロールはSECTIONで指定した場所に配置されますが、SECTIONをリセットして元の配置にする場合はどうすれば良いですか?
2024/02/21(水) 15:14:45.35ID:piaLdJEi0
ああ自己解決しました。
2024/02/22(木) 05:56:34.40ID:jHoqPNQr0
>>40
ふむ

配列は大丈なのかな?
大丈夫な気はするが…
2024/02/22(木) 19:55:49.48ID:BXwIPoxz0
ChromeのパチモンブラウザのInspectでSourcesを見てると
Consoleの入力欄からちょいちょいフォーカスが外れて困ってるんだが、何かいいアイデアはないだろうか
2024/02/25(日) 16:46:22.45ID:qujSbJD80
現在のGUIの特定のコントロールがDisableかEnableかを知る変数的な機能ってありますか?
2024/02/25(日) 17:28:07.18ID:hLJfR+190
https://ahkscript.github.io/ja/docs/v2/lib/GuiControl.htm#Enabled
2024/02/25(日) 17:46:36.20ID:qujSbJD80
解決しました、有難うございます。
2024/02/25(日) 18:03:24.37ID:tGG481cl0
ぼちぼちv2に移行するか…
多すぎてめんどくさい…
2024/02/25(日) 18:10:29.86ID:CCZOt+Ta0
V1.1時代に作ったのはもうそのままにしてる。改修が必要なものや新規に書くものはV2にしてるけど。
2024/02/25(日) 18:46:47.59ID:npuliHf90
V1 と V2 共存できるの?
2024/02/25(日) 19:38:22.79ID:CCZOt+Ta0
先にV1入れてあればV2インストール時に同居の設定とか選べたと思うけど
コンパイルする時のバッチファイルで元になるバイナリもしくは実行モジュールを
パス指定すりゃいいだけなのでバージョン違いをいくつでも同居できる
2024/02/25(日) 20:37:46.10ID:JaTrMCi10
拡張子変えて管理してるのはダサいの?
V1はそのままでV2の拾い物には .ahk2 にしているが。
2024/02/26(月) 06:28:33.21ID:UI6RVr1a0
スクリプト置くフォルダを変更すればいいんじゃ?
2024/02/26(月) 15:05:39.72ID:jxZkTh8B0
winhookがv2化してくれたら完全移行する
2024/02/27(火) 19:41:04.81ID:EXLLOPxc0
https://github.com/AHK-just-me/Class_SQLiteDB

これをv2でも動くようにしようとエラーが出るたびにチマチマと修正していったが修正箇所多すぎて投げた
「AHK v2からSQLiteのDLLを使う単純なコード」の例がネットにないんだよな
ChatGPTやGeminiに聞いても正しい回答は出てこないし
2024/02/27(火) 20:24:58.87ID:EXLLOPxc0
というか、DLLを使ってデータベースを操作するという処理が、そもそも単純ではないんだろうな
なんとなくデータベース処理用の組み込み関数を使うのと大差ないやろと思っていたが、
抽象度が一段下がるから。
「SQLiteをちょっと使いたい」程度なら、CLIからsqlite3.exeを呼び出す方がいいんやろね
このライブラリがv2に対応してくれれば一番いいけど
2024/02/27(火) 20:50:42.86ID:lR48cM5c0
>>54
https://www.autohotkey.com/boards/viewtopic.php?f=82&t=121990&hilit=winhook

>>55
https://www.autohotkey.com/boards/viewtopic.php?f=83&t=95389&hilit=Class_SQLiteDB
2024/02/28(水) 01:52:50.37ID:R36ZnXWQ0
>>57
もちろん知ってるんだが、微妙ーーに挙動がおかしいのよ
完全版待ち
2024/02/28(水) 11:57:44.80ID:+Zia7VdD0
絶対知らなかっただろw
60名無しさん@お腹いっぱい。
垢版 |
2024/02/28(水) 22:56:42.23ID:DfbbpxMO0
v1系で
文字列の中にxとかabcとか任意の文字列が何回登場するか?ってどうやって取得するべき
ダイレクトに何番目は此処って変数ある?
61名無しさん@お腹いっぱい。
垢版 |
2024/02/28(水) 23:19:46.14ID:DfbbpxMO0
ん? 3行目おかしいな
何番目は此処 じゃなくて 何個ある だ
62名無しさん@お腹いっぱい。
垢版 |
2024/02/28(水) 23:20:17.05ID:DfbbpxMO0
ん? 3行目おかしいな
何番目は此処 じゃなくて 何個ある だ
2024/02/28(水) 23:37:15.71ID:K4I/JOut0
変数?
2024/02/29(木) 00:41:50.45ID:QwHRer9Q0
regexmatchのオプションにあったような
サブマッチをオブジェクトにまとめる奴
2024/02/29(木) 00:44:32.13ID:nI7TypkK0
https://www.autohotkey.com/docs/v1/lib/StrReplace.htm
66名無しさん@お腹いっぱい。
垢版 |
2024/03/01(金) 14:19:26.98ID:DFO14fjw0
60だけどありがとう 参考にするね

ABC1234/ABC2345/BCD1234/CBD3456/ABC1234/・・・・と

アルファベットと数字で構成された6文字以上の文字列が/でつながった長い一つのテキストになっています。
これを/を区切り文字にして一旦
ABC1234 ABC2345 BCD1234 CBD3456 [ABC1234] にわけ、かつ重複[]をなくし元の形の様に戻そうと思っています。

前:ABC1234/ABC2345/BCD1234/CBD3456/ABC1234/・・・・
後:ABC1234/ABC2345/BCD1234/CBD3456/・・・・

方法としては、
文字を頭から/で切り分けて、
1.先頭の区切った単位(ABC1234等)を配列に入れ
2.2番目以降の切り分け作業は、重複を検出するため配列のループで回し対象の文字が配列と同じなら重複である変数を吐き同じなら配列に格納しない
■ このスレッドは過去ログ倉庫に格納されています
16歳の水野カイトが封印の刀を見つけ、時間が裂けて黒い風と亡霊の侍が現れ、霊の時雨と契約して呪われた刀の継承者となる場面

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