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/04/03(木) 01:38:18.65ID:P3+h92zH0
>>610
何できるの?
便利なの?
2025/04/03(木) 06:03:47.39ID:FE1QED/b0
何と自動化にできる
2025/04/05(土) 16:34:53.46ID:K4jSyYEF0
何と自動化にできる?果たして便利だろうか?
2025/04/05(土) 18:04:36.69ID:/J/zFfFo0
便利か便利じゃないかは人によって変わるだろう
2025/04/05(土) 19:15:57.01ID:UVHPNtJH0
自由度と簡単さは相反するからな

簡単にいろいろできると便利だけどそんなうまい話は無い
簡単なツールはやれることが限定されてるし、
細かいことをやろうと思うといろいろ大変
2025/04/07(月) 10:44:52.28ID:zP2YC+2P0
怪文書ですみませんが、何かあればお願いします・・

○やりたいこと

ログイン画面でスリープを割り当てたい

DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)


○試したこと

普通に割り当ててもできない(f12::スリープ など)
タスクスケジューラでログイン前から何故か動くのは知っていた

keywaitで待ってもらえないかな?

無理


ロジクールのマウス割り当てでデフォルト設定を「ファイルを開く」にするとログイン画面でも何故か動く(スリープできる)
「キーボードショートカット」だと無理

デフォルト設定がスリープ単騎だと不便

ログイン画面の実行ファイル?を指定できたらいいな
ログイン画面で色々取得してみよう
(ProcessName)(WindowTitle)(WindowClass)(hWnd)(X, Y)(Width, Height)(PID)

全て空欄(他では機能した)

一応、ログイン画面以外の全てを指定して実質デフォルト設定にしたらやりたいことはできるが、流石に不便そう
(アプリ入れるたびに設定に来ることになりそう)
2025/04/07(月) 11:00:50.75ID:BBgz5+8A0
怪文書で読みにくい日本語だがロジクールのマウス割り当てでログイン画面でAHK起動すればいい
2025/04/07(月) 11:47:19.83ID:zP2YC+2P0
>>617
申し訳ないです・・
マウス割り当てで解決しようとする場合、アプリをしらみ潰しに手動で登録する必要がありそうなので、他の方法があればなあと思っています・・

ログイン画面でのロジクールのマウス割り当ての挙動を補足しておくと・・(読まなくても大丈夫です)

○スリープできる詳細

マウス割り当て「ファイルを開く」
ファイルの内容→DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
→ログイン画面でマウスの物理ボタンを押すと機能する


○スリープできない詳細

①マウス割り当て「ファイルを開く」
ファイルの内容→f12::DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
→ログイン画面でマウスの物理ボタンを押した後、f12を押しても何も起こらない

②マウス割り当て「キーボードショートカット」
マウスにf12を割り当て
常駐しているahkのスクリプト内に f12::DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
→ログイン画面でf12を押しても何も起こらない

※※
このことから、ログイン画面ではキーボードショートカットは機能しないが、ファイルを開くことはできる?となりました(チラ裏)


※※(試したことの一つ目の話)
タスクスケジューラでPC起動時にファイルを開いておく
→keywait
→キーが押されたらスリープ  というのもできないか試しましたが、キーが押されてもkeywaitが反応しないようでした
2025/04/07(月) 12:05:34.03ID:BBgz5+8A0
>>275を投稿した
> 整合性レベルの低いプロセスは整合性レベルの高いプロセスにアクセスできない
これは
>ファイラを管理者権限で使うとautohotkeyが効かない
というものだった

AHKを最上位の権限で動かしてそれでもダメならダメだろ
2025/04/07(月) 20:10:51.99ID:pjwOJJm30
キーボードの右Altキーにマウスの左クリック、アプリケーションキーに中クリックを振り分けたいのですがどう書き込めばいいんでしょうか?
2025/04/07(月) 20:14:48.41ID:TNlFyKB/0
>>620
AutoHotkeyの説明書通りにスクリプト作成すれば良いんだよ
2025/04/07(月) 20:22:19.59ID:ClgbMOYk0
>>620
>>1
2025/04/07(月) 21:56:39.92ID:Q2mUEfhd0
>>620
その質問はAIに聞くべき
2025/04/08(火) 08:09:48.96ID:6CdqM6lw0
>>620
Altみたいな修飾キーの上書きにはコツがある
まずはAHKではなくOSの機能で右Altを他のキーに入れ替える
F13〜24のような物理的には普通存在しないキーのコードも定義されている
後は自力救済しなさい
625名無しさん@お腹いっぱい。
垢版 |
2025/04/11(金) 23:12:01.84ID:fnT9D5n90
V2移行でAIに質問することも多いけど、一番V2に詳しいAIってどれなんだろう
今のところGemini 2.5が良い感じという感触だけど
2025/04/11(金) 23:16:53.10ID:ohKLz+XL0
エキサイト翻訳させて楽しむみたいな遊び?
2025/04/13(日) 12:36:20.11ID:Or3q1Kio0
GLOCKがかなり詳細に説明してくれる
2025/04/13(日) 18:34:51.14ID:KYI7N5x+0
mousegestureLで、aタグの上でだけahkの処理をしなくさせるって設定とか処理とかってある?

ブラウザ内で文字列を選択した後にミドルクリックすると別アプリを起動して文字列を送る、っていう処理するスクリプトの中でaタグだけ反応させないようにしたい
(リンクの上でだけ従来のaタグ処理をしたい)

理由:どこかで文字列を選択してるとリンククリックしても「文字列を選択してるからスクリプトが反応する」のでそれを防ぎたい
2025/04/13(日) 19:01:38.95ID:jWH9ip4Y0
>>628
mousegestureLには「MG_GetCursor()」という関数付属してるからリンク上(指アイコン)か否か判断できる

(´・ω・`).。o0(mousegestureLスレ有ったと思ったが今は無くなった?)
2025/04/13(日) 19:05:42.72ID:jWH9ip4Y0
>>629
追記
ちなみにWin10だとリンク上(指アイコン)では戻り値は「65567」
2025/04/13(日) 20:54:00.27ID:G4BxlZNO0
>>629
スクリプト荒らしのせいで普段動いてなかったスレはほぼ全滅したよ
2025/04/13(日) 21:28:23.23ID:KYI7N5x+0
>>629
ありがとうございます
マウスカーソルで判断して処理を分けることが無事できました

ターゲットの入力補助でやるというのが最初分からなくて戸惑いましたがなんとか複製して条件追加でなんとかなりました

win11では32649らしい?です
2025/04/13(日) 21:30:42.18ID:KYI7N5x+0
あれ?よく見たら
MG_CheckCursor(32649,0)
だった

希望通りの動作してるけどやり方間違って…る?
2025/04/14(月) 07:32:07.79ID:9Adqi0UY0
省略したら自動で0が入るとかじゃない?
2025/04/14(月) 20:45:23.48ID:bx6TMO7Y0
AHKで「右クリック+何か」をトリガーとして使うとアプリ由来のマウスジェスチャーが反応しなくなるんだけどこういうもん?
2025/04/14(月) 20:54:44.11ID:2KGDgYR90
フックを奪ってる?
637名無しさん@お腹いっぱい。
垢版 |
2025/04/14(月) 21:14:56.42ID:TmKuD60f0
ガチャピン
2025/04/18(金) 13:20:01.14ID:uiVrkmxb0
可変長引数*よりもオブジェクト引数の方が便利だな。
test(default, option:={}) {
if (IsObject(option) and (option.HasProp("xxx")) {
; ------
}
}
2025/04/18(金) 19:35:08.21ID:fd2mvOse0
>>638
2025/04/19(土) 11:38:31.84ID:Af/dMQvS0
AHK1でタスクバーの上に常時表示される日付と時計をください
2025/04/19(土) 12:06:32.71ID:wsTARcIV0
gui,-border
settimer,a,1000

a:
gui,show,na,%a_mm%/%a_dd% %a_hour%:%a_min%
2025/04/20(日) 02:21:25.29ID:7pTzTNTE0
ありがとうございます
2025/04/21(月) 16:00:26.89ID:hZ16kdJ70
>>629-633
MouseGestureL.ahkを流行らせるスレ Part6
https://egg.5ch.net/test/read.cgi/software/1739837051/
か、
Board indexAutoHotkey (v1.1 and older)Scripts and Functions (v1) > MouseGestureL
の公式掲示板があるよ
2025/04/21(月) 16:19:00.57ID:k9x9OcUb0
>>643
いつの間に
ありがとう今度からmousegestureLのことは向こうで聞く
2025/04/21(月) 22:55:08.22ID:hZ16kdJ70
あ、でも前者は人が帰ってこないから、ぴょんきちさんが降臨してる後者の掲示板に
翻訳aiできれいな英語書いて、そっちに投げたほうがいいかも。
2025/04/22(火) 06:14:50.78ID:wjOc/YuN0
前のスレが落ちてからだいぶ長いこと立ってなかったから仕方ないね
2025/04/25(金) 07:09:47.88ID:Gzi6czpg0
まだv1.1使ってるんだけどv2でもAhk2Exeでコンパイルできるの?
2025/04/25(金) 07:23:31.29ID:8qekVPcx0
できるよ
2025/04/26(土) 18:06:22.78ID:UKaOfrQi0
AutoKeyはLinux用のフリーでオープンソースの自動化アプリケーションであった。。。
2025/04/26(土) 18:37:08.00ID:HfP67IaD0
何言ってんだ?
2025/04/26(土) 18:40:28.57ID:3mNg6DA/0
自動化アプリケーションであったと思う吉宗であった
2025/04/26(土) 18:52:32.46ID:jMbS+rqI0
"AutoKey" であって "AutoHotKey" ではないのであった
故にスレ違いなのである
2025/04/28(月) 18:06:05.10ID:PdgKN1b50
状況を通知するためにSendMessageで無理やりカレントウィンドウのアイコン挿げ替えちゃうのおもろいな
2025/04/29(火) 15:16:02.25ID:Zemsdvnw0
画面数とかを変えるとAHKの取得座標がバグるの、PC再起動以外に治す方法ない?
動画観るときだけTVに拡張とかやるんだけど
2025/04/29(火) 16:54:56.73ID:aSfsOZAZ0
ahk再起動
656名無しさん@お腹いっぱい。
垢版 |
2025/04/29(火) 22:46:53.61ID:+05RN4z/0
右ShiftとCtrlを入れ替えたいんですが、以下のように記述してもCtrlとして動作しません
RShift::Ctrl
RShiftを別のキー(RAltとか)にすると動作するのですが、Shiftだけは何か特別だったりしますか?
2025/04/30(水) 07:59:08.91ID:a3FmoFyv0
スクリプトのリロードはこういうの仕込んどくとよい
なんかキーがおかしいと思ったらとりあえずリロードする悪習がついてしまった

Send,{Ctrl up}{Alt up}{Shift up}{WinKey up}{SC7B up}{SC78 up}

Ctrl & RShift::
Suspend,Permit
Suspend,Off
Reload
return
2025/04/30(水) 08:08:43.98ID:KJkAXDXd0
さてはv1だな
2025/04/30(水) 09:29:03.93ID:C4DsreEM0
>>656
v1だけで起こるバグだろう
2025/04/30(水) 13:50:51.12ID:uRvI2dLQ0
>>657
Ctrl & RShift::
って何?
2025/04/30(水) 14:01:17.40ID:AnNBjRFL0
>>660
ctrlとrshiftの同時指定?
2025/04/30(水) 15:54:36.98ID:wobAJVa70
>>660
v2ホットキーのカスタムコンビネーション
https:/ahkscript.github.io/ja/docs/v2/Hotkeys.htm#combo

v1ホットキーのコンビネーションキー
http:/ahkwiki.net/Hotkeys#.E3.82.B3.E3.83.B3.E3.83.93.E3.83.8D.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.AD.E3.83.BC
2025/04/30(水) 22:31:50.73ID:uRvI2dLQ0
>>662
ほう

意外と知らなかったわ
数万行書いてきたけど
2025/04/30(水) 22:36:41.46ID:KJkAXDXd0
何をそんなに書くことがあるんだよ
2025/04/30(水) 23:01:33.88ID:WdOfGJcw0
Windows11でhogeのウインドウをボーダレス化したいのですがこれが最適でしょうか?
WinSet,Style,-0x40000,ahk_exe hoge.exe
WinSet,Style,-0x00C00000,ahk_exe hoge.exe
2025/04/30(水) 23:19:27.39ID:uNoBFfAm0
WinSet, Style, -0xC00000, ; タイトルバーを削除
WinSet, Style, -0x800000, ; 境界線を削除
WinSet, Style, -0x40000, ; サイズ変更枠を削除

適当だけどこれでいいんじゃ?
667名無しさん@お腹いっぱい。
垢版 |
2025/05/01(木) 07:25:24.79ID:LPAnYSIn0
>>659
v2です
v1で存在したバグなら、v2でも直ってないってことですかね
2025/05/01(木) 07:28:18.86ID:PgPBgxkF0
境界線の削除もいるのですね ありがとうございました
2025/05/01(木) 07:46:15.38ID:50RLhBEN0
>>667
どうしたらそう読み取れるのか不思議
2025/05/01(木) 11:59:55.83ID:Ixg7iRi10
v2で起きている
v1でも起きていた

v2でも直っていない

これ以外の読み取り方ある?
2025/05/01(木) 12:17:31.59ID:kAczDSpy0
>>670
あの返信で、「V2でも起きている」はどこから読み取ったの?
2025/05/01(木) 12:19:25.30ID:KUu37+Fc0
>>671
>>667
2025/05/01(木) 12:42:46.85ID:paKxRI3l0
>>662
これって、
3つ押しはできないのかね?

ctrlとかだけ?
2025/05/01(木) 12:49:15.12ID:4vNiUxb40
3つ目はGetKeyStateの結果で分岐させろ
2025/05/10(土) 02:01:24.59ID:uqeJaqPV0
v2のsettimerで動作する無名関数とアロー関数いいな
2025/05/12(月) 23:38:02.43ID:jsCFu0560
GuiにTextを追加したとき、
その文字列の表示の横幅(ピクセル)って計算できる?

背景を、その横幅に合わせたい
2025/05/13(火) 00:08:32.88ID:ZbUzl02M0
hideでshowしてguicontorolgetして再度show
2025/05/13(火) 12:07:15.60ID:Wrk0w7uO0
>>677
あ、
最初にTextをAddしたときに、その文字列の横幅になるけど、
そのTextの文字列を変更したとき、横幅が変わらないわ…
2025/05/15(木) 13:39:26.02ID:EaAsO+xw0
Macから移住してきてAHK知ったけど便利だなこれ!
コマンド覚えるのめんどくさくてドキュメントにあったUIA含むget系全部突っ込んでObjectで吐くコードの実行速度測ったら200msec程度で非常に高速だった。
DllCallでWindowsAPI直接叩いたらもっと早くなるんだろうか?
https://i.imgur.com/BMhqj5m.png
2025/05/15(木) 14:28:31.47ID:20G4ek800
画像にあるコードのうち
Time(5)
MsgBox_(a)
Time(0)
の箇所が(5,0)経過時間でメッセージボックスにかかる時間200msecが遅いと言ってる?
2025/05/15(木) 14:33:46.48ID:20G4ek800
「UIA含むget系全部」について詳しく
2025/05/15(木) 14:35:12.67ID:EaAsO+xw0
>>680
(4,5)のGetAllTitle部分
現在はAHKコマンド使っているのでこれの速度アップ期待できるならなんかいいなーという程度
MsgBox_()はまだ不慣れでスパゲッティ
2025/05/15(木) 14:36:02.04ID:XlndfuuN0
遅いとは言ってない
もっと早くなるのかと問うてるんでは?
2025/05/15(木) 14:38:10.96ID:20G4ek800
>>682
(4,5)経過時間は57msecと画像に表示
2025/05/15(木) 14:52:40.46ID:EaAsO+xw0
>>681
ドキュメントにあったwindowtitle関係とUIA InterfaceのUIA.ElementFromHandleのプロパティ片っ端から入れただけ。おそらくUIA権限の影響で全部取れてないみたいだけど17項目取得してた。
uia: Object{
;; OWN PROPERTIES (Object) ;;
status: 部分的に成功 (14/17),

https://i.imgur.com/dyPff2O.png
2025/05/15(木) 16:51:05.23ID:goYGf0hx0
ShowExplorerの右クリコンテキストメニューみたいなやつ(FilePath) {
...
}

誰か ... の部分を埋めてくれ
2025/05/16(金) 23:09:59.45ID:p81uh+Gi0
Win + 2を、#2::って書くと、
たまーに間違ってスタートメニューが出るわ…
2025/05/17(土) 05:12:17.50ID:pYcdfzaK0
winを押して少しwaitしてから2を押す動作でないとwindows側がおかしくなるんだよな
win-2に複数のウィンドウが割当たっていると確実におかしくなる

yamyで同じことしてた時は何の苦労もなく使えてたのに
2025/05/17(土) 05:56:42.81ID:UOq6XkeR0
>>688


ちゃんと言うと、Win+2を押すと、
#2::のスクリプトが実行されると同時に、スタートメニューも出る

Autohotkeyの処理がおかしいのかな…

Win11、Ahk v2で
2025/05/18(日) 17:45:22.76ID:v6f1DORU0
v2のmsgboxって、
時間で閉じるのと、always on topを同時にできないのかね…?
2025/05/18(日) 17:57:34.14ID:XA+dpzsb0
スクリプト作成依頼?
サンプルプログラムを先に提示すべき
2025/05/24(土) 23:41:07.92ID:az7Z67Ez0
v2に慣れるとv1文法が気持ち悪すぎる
2025/05/25(日) 07:07:10.15ID:tJLVxYTp0
互換性なくしてまで文法ちゃんとさせたのに、
まだちゃんとしてない部分が残りまくってるのが残念すぎる

根本は何も変えてなくて、シュガーコート的に変えてるだけなので、
土台から駄目な部分はどうやっても残る
2025/05/26(月) 02:29:01.34ID:xf+bC6R+0
そのあたりは公式のフォーラムで好きなだけ議論するのだ
2025/05/26(月) 19:48:58.58ID:PpcLw8GB0
言語を再発明する必要がそもそもあるのかという話で
使い慣れた言語から呼び出すライブラリ形式で公開した方がよっぽど役に立つ
2025/05/28(水) 09:18:25.33ID:gqNEjsmJ0
autohotkeyで、
VMwareを操作したいが…
無理?
2025/05/28(水) 09:53:22.07ID:vqCxKBfS0
座標でどうにか
2025/05/30(金) 16:38:25.68ID:Yr9jVGnY0
数が増えすぎて作った関数を覚えてない問題をみんなどうやって解決してるの?
2025/05/30(金) 17:10:52.19ID:R+Xed/n50
1. コードのドキュメンテーションを充実させる

これが最も根本的な解決策です。
関数を作る際に、その関数の目的、引数、戻り値、簡単な使い方などをコメントで記述する習慣をつけましょう。

2. 関数名をわかりやすくする

関数名だけで何をする関数なのかが推測できるような名前をつけましょう。

3. IDE (統合開発環境) / エディタの機能を活用する

多くのIDEや高度なテキストエディタには、コード探索やナビゲーションに役立つ強力な機能があります。

4. バージョン管理システム (Gitなど) を活用する

5. 既存のコードを読み解く戦略

もしすでに多くの関数を作成してしまっている場合、以下の方法で「思い出す」ことができます。
* ファイルやディレクトリがどのように分かれているかを理解することで、目的の関数がどのあたりにあるかの見当がつきます。
* メインの処理や、自分が覚えている関数から、呼び出されている関数をたどっていくことで、関連する関数を見つけられます。
* テストコードがある場合、その関数がどのように使われているか、どのような引数で呼び出されるかなどを知る良い手がかりになります。

6. 小さな単位で関数を作成する (リファクタリング)

一つの関数が多くの処理を担当していると、全体像を把握しにくくなります。
2025/06/03(火) 02:46:51.68ID:7OElfdUd0
.ahkのソースコード全スキャンし
foo() {
#if or #hotif
形式の文字列を正規表現で抽出しファイルのフルパス+行をファイルに保存

毎時or毎日ランダムに1個抽出してその個所をテキストエディタで開き、関数を眺めて記憶をリフレッシュ
不要なら削除するか!!trash!!.ahkに移動

1週間に1回程度リストを更新する

このやり方は自作メモや音楽、動画ファイルなんかにも有効
2025/06/04(水) 02:58:53.28ID:sTySmO7A0
最終的に関数のdocstringsをmarkdownでまとめてdockerでMCP化するのとclinerule化して関数作る前に似たのあるか聞くようにしたわ
702名無しさん@お腹いっぱい。
垢版 |
2025/06/10(火) 13:34:12.49ID:xbkV/Szl0
誤爆しやすくて邪魔でしかない拡大鏡、OSで無効に出来ないけど、これで無効にできてありがたい
2025/06/10(火) 14:07:42.33ID:YKHQiX1e0
win + +(;) が誤爆しやすい?

何と間違えやすいのだろうか?
2025/06/10(火) 14:25:43.02ID:pxz/swIq0
横から回答
win+l
705名無しさん@お腹いっぱい。
垢版 |
2025/06/10(火) 21:11:31.84ID:NxQurR1Y0
トレイアイコンを右クリしたときの色が全体に変わらないんだけど良い方法ありますか?
Persistent
Tray := A_TrayMenu
Tray.SetColor("888888", True)
2025/06/15(日) 16:56:43.29ID:40xoh1QB0
エクスプローラーでホイールクリックをシフト+右クリックに置き換えたら「送る」の中に本来ないものまでみえる
なんぞこれ
2025/06/15(日) 17:05:46.35ID:xDtTpMmD0
置き換えたらってどうやって?
AならB。Bは何?Aが意味不明
2025/06/15(日) 17:16:24.18ID:O7cqOaSP0
ahkの前に日本語の勉強した方がよさそう
2025/06/15(日) 18:50:51.34ID:ARJri1cg0
shift押しながらコンテキストメニュー表示したらって事?

本来見えないものって何?
もしくはスクショ貼って
2025/06/15(日) 19:01:54.12ID:vxf99+Zv0
>>706
そもそもエクスプローラーのSHIFT+右クリックは隠れてるコンテキストメニューが出てくるようになってる
設定で弄ってないければコマンドプロンプトで開くようになってたり色々
レスを投稿する

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

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