AutoHotkey スレッド part33

レス数が1000を超えています。これ以上書き込みはできません。
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/06/22(土) 14:31:48.74ID:CjHlC5hk0
拡張機能経由でchrome色々操作するアイデア
chrome.ahk使ってたけど、AutoControl Managerにするわ
https://www.youtube.com/watch?v=gr4z0Xw8W2g
2024/06/22(土) 16:03:14.98ID:oJ4sXql10
>>952
2014年の古い投稿にChrome extensionへのリンクがある
https://www.autohotkey.com/boards/viewtopic.php?style=17&t=68422
インストールしてないから知らないんだろうがAutoControl Managerという名前ではない
2024/06/22(土) 17:14:58.96ID:uUmyofV20
>>952
AHK と AutoControl それぞれ得意分野が違うから
両方使うとよい。連携させて使うとさらにいろいろできる。
AutoControl では JavaScript が使えるので、文法に悩むことがない。
あと、押しっぱなし病が出たとき、AutoControl は警告を出してくれる。
2024/06/22(土) 17:17:03.01ID:BILpHbnp0
>>953
コピペミスってManagerまで入れてしまったのがそんなに気に食わないかね?
https://www.autocontrol.app/
2024/06/22(土) 17:30:45.84ID:SK/hsq8D0
>>955
そんな事情知ったこっちゃないんだから何でも察せってのはバカの証
2024/06/22(土) 17:42:58.01ID:TN+oqp0H0
>>955
自分でYouTubeのリンクを貼ったのに見てないんじゃない?
YouTubeの映像ではAutoControl Shortcut Managerと表示されてる
拡張機能の名称が変わってるんだよ
958名無しさん@お腹いっぱい。
垢版 |
2024/06/23(日) 23:28:17.77ID:L5YMKkLQ0
Mac 用の少しAHKみたいなもの
詳しくは知らないが、興味がある人がいるかもしれないのでシェア

Phoenix | Phoenix
https://kasper.github.io/phoenix/

A lightweight macOS window and app manager scriptable with JavaScript.
With Phoenix you can bind keyboard shortcuts and system events, and use these to interact with macOS.
2024/06/23(日) 23:44:24.12ID:IHMv+4jU0
さすがにこのスレとは無関係だろ
960名無しさん@お腹いっぱい。
垢版 |
2024/06/25(火) 22:36:04.98ID:qV/OB6ii0
メモ帳の内容をEditコントロールにコピーするGUI付ahkスクリプトを書いているんだけど、編集エリアより行数の多いテキストをコピーした後にEditコントロール末尾にカーソルを合わせる方法ないだろうか。
Getcontrol, FocusとSendでできるかと思ったら上手く行かなかった。
上手いやり方ないですかね。

Gui, Add, Button,, Copy
Gui, Add, Edit, xs vMemo Multi w600 r20
Gui, Show, x1100 y150, hogehoge
Return

ButtonCopy:
oldClipboard = %Clipboard%
Clipboard =
WinGetTitle, CurrentWinTitle, A
WinActivate, ahk_exe notepad.exe
Send, ^a^c
ClipWait
If (!ErrorLevel) {
GuiControlGet, oldMemo,, Memo
newMemo := oldMemo . Clipboard
GuiControl,, Memo, %newMemo%
GuiControl, Focus, Memo
Send, ^{END} ;これでカーソルを編集エリア末尾に移動させたいが上手く動いてない

WinActivate, %CurrentWinTitle%
Sleep 150
}
Clipboard = %oldClipboard%
Return
2024/06/25(火) 22:51:05.97ID:1aV0LDii0
>>960
メモ帳がアクティブになってるうちにメモ帳にCtrl+End送ってるからでしょ
GUIがアクティブになってからSendするか、GUIに対してControlSendで

なんならメモ帳をControlGetTextで取ればアクティブ替える必要ない
962名無しさん@お腹いっぱい。
垢版 |
2024/06/26(水) 00:03:08.02ID:arlV+G8e0
>>961
> メモ帳がアクティブになってるうちにメモ帳にCtrl+End送ってるからでしょ
Ifに突入してからは制御はahkに移ったままだし、メモ帳も全選択解除されてないからメモ帳にCtrl+End送ってる感じはしない。

> なんならメモ帳をControlGetTextで取ればアクティブ替える必要ない
メモ帳のテキストをコピーするのにControlGetText使えばフォーカス制御とかクリップボードの待ち合わせいらなくなって短く書けるかと思ったけど調べながら書き始めたら全然分からんわ。

ButtonCopy:
ControlGetText, newMemo, Edit, ahk_exe notepad.exe
GuiControl,, Memo, %newMemo%
Return
963名無しさん@お腹いっぱい。
垢版 |
2024/06/26(水) 00:53:57.13ID:q8+ksT1s0
Edit control の描画がされていないうちに ^{End} を送ってしまってるからかもしれない

SetTimerを使って少ししてから ^{End} を送ってみてはどうだろう

SetTimer(() {
Send("^{End}")
}, -1)

v2 (のalpha)だと関数をその場で作れる
v1 だと関数を別の場所で定義する必要がある
GuiControl(Focus, Memo) を SetTimer の中に入れてよいのか、よくないのかはわからない
上記のコードは試していない. コンセプトだけ示した
2024/06/26(水) 01:41:21.80ID:0tefdxui0
WinActivate, %CurrentWinTitle%
Sleep 150

   ↓

WinActivate, %CurrentWinTitle%
Sleep 150
Send, ^{END} ;←ここに移動させたらカーソルは編集エリア末尾に移動した

よく分からんけどこうなればいい?
2024/06/26(水) 08:38:39.97ID:NJcLQrvn0
>>962
> ControlGetText, newMemo, Edit, ahk_exe notepad.exe

コントロールが間違ってる
2024/06/26(水) 12:24:12.05ID:e3ENr3qP0
>>960
>>961が全面的に正しいので以下は全て補足となりますが
Send, ^{END} が効かないのは、実行時点でアクティブなメモ帳に対して送っているからと言うことであっています
Sendの直前に GuiControl, Focus, Memo があるので、メモ帳の編集エリアからフォーカスが外れるため、メモ帳側で編集エリアでのキー入力として処理されていないだけです
ウィンドウのアクティブ状態とフォーカスの所在は別物であると認識しておいてください

したがって、>>964での記述通りhogehogeをアクティブ化した後でSendを送れば有効ですが
以下のようにEditのオプションにHWNDを追加してControlSendで送るのがより良いかと思います
Gui, Add, Edit, xs vMemo Multi w600 r20 HWNDh_edit

ButtonCopy:
ControlGetText, newMemo, Edit1, ahk_exe notepad.exe ; 編集エリアのコントロール識別子は「Edit1」
GuiControl, , Memo, %newMemo%
GuiControl, Focus, Memo
ControlSend, , ^{End}, % "ahk_id " h_edit
Return

HWNDではなく ControlSend, Edit1, ^{End}, hogehoge のようにしても有効ですが、一意性や高速性などの点から、HWNDを使用した方が良いです
2024/06/26(水) 19:18:35.95ID:6I1DaBGA0
特定のDialogBoxが出たら [OK] をクリックさせたいです。

https://qiita.com/rohinomiya/items/a13239df948e4d7fa4d5
をみたけどどうもうまきいませんでした、他に良さそうなサイトあれば教えて下さい。

会社の VDI が社内ポリシーで3時間未使用だと、強制再起動のDiaglogが出て
強制shutdownしてしまいます。朝一会社で打ち合わせに行き、午後戻ってきてPC操作すると、
VDI (Windows) がShutdown状態から起動してくるので一通りアプリを立ち上げるのがすごく面倒です。
2024/06/26(水) 19:46:19.36ID:1q57H4qL0
www.autohotkey.com/boards/が最強サイト
次点でstackoverflow
2024/06/26(水) 20:24:03.90ID:+mvUXU380
>>967
定期的にSend {F24}とかをやっとけば、スクリーンセーバーもでなくなるから、そういうダイアログもでなくなるんじゃないの?
2024/06/26(水) 21:08:20.26ID:HTVeCHPK0
>>967

??
2024/06/26(水) 21:18:05.53ID:s8e1M/5T0
マウスふるふる
2024/06/27(木) 06:30:55.76ID:rReXrhNi0
うまきいませんでした…
2024/06/27(木) 08:45:53.62ID:GFIgvPsI0
クラウドのVM環境なら普通こういう機能がある

WVDを業務時間中のみ起動させる(スケジュール自動起動・シャットダウン)
https://365cloud.jp/wvd%E3%82%92%E6%A5%AD%E5%8B%99%E6%99%82%E9%96%93%E4%B8%AD%E3%81%AE%E3%81%BF%E8%B5%B7%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B%EF%BC%88%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E8%87%AA/
2024/06/27(木) 21:06:19.58ID:4m74meBk0
Version : AHK1.1.37.02

勉強で自動クリックするスクリプトを作成しています。

ファイルのショートカットを作成して、このショートカットを削除します。
「ショートカットの削除」の確認ダイアログ [はい] [いいえ] が出るので、
これを [はい] を自動でクリックしたいです。


WindowSPY で値を確認して作成しましたが...駄目です。どこが悪いのでしょうか。
公式の www.autohotkey.com/boards とかも見ましたが素人には敷居が高いです



;「ショートカットの削除」の確認ダイアログ自動クリック

SetTitleMatchMode,2
#Persistent

SetTimer AutoClick,1000
return

AutoClick:
IfWinExist, ショートカットの削除 ahk_class #32770
{
ControlClick はい(&Y), ショートカットの削除 ahk_class #32770
}
return
2024/06/27(木) 22:31:21.87ID:5gh9UDEx0
それで駄目じゃないはずだけど
976名無しさん@お腹いっぱい。
垢版 |
2024/06/28(金) 01:27:11.08ID:iHuXlTTR0
>>966
ControlSend周り書き下してもらってやっと使い方分かりました。
他にもGui,AddにそんなHwndオプションなんてあったか?と思ってリファレンス見直したら確かに載ってたりした。
常にhwnd指定するようにすればあまり好きじゃないWinactivate+SendをControlSendで駆逐できたりもするのか。
しかしちょっと気を利かせようとすると途端にahkの薄い膜をWin32APIの棘が突き破ってくるのなんか興奮する。

>>963 一昔前のJavaScriptもだけどSetTimerのコールバック関数にするやつ未だにちゃんと動かせた試しがない。
>>964 Sleepの位置で動作の変わるスクリプトとか自分で書いてて怖くなってくる。

とりあえず一週間くらいウンウン唸ってたのがお陰様で動くようになりました。
ありがとうございました。
2024/06/28(金) 11:34:26.91ID:Du02qHB20
正常系はどう書いても動くんだよ
他の処理と干渉しないタイミングを探す、みたいな時はトライアル&エラーになる
2024/06/28(金) 12:08:52.41ID:+zDK7Z/n0
v2に直して試したけど普通に動くな
何故かコントロール拾えなくてエラー落ちしたことあったけど
2024/06/28(金) 12:17:27.59ID:FBrsw8Fl0
>>974
コード自体はそれで動作します。おそらく文字コードだと思います
スクリプトファイルが「UTF-8 BOM付き」で保存されているか確認してください
2024/06/28(金) 13:22:54.85ID:gjIaTd830
>>979
BOMなしでいいぞ
2024/06/28(金) 13:25:55.85ID:gjIaTd830
メメントモリするahk v1を学んでも意味がない
初心者はahk v2を学ぶべき
2024/06/28(金) 13:41:22.63ID:dbBVvOI70
>>980
v1.1はBOMがないと既定ANSIなんでいいわけがない
2024/06/28(金) 14:20:05.35ID:TUC4XS3v0
メメントモリするなら学ぶ意味があることになるだろ
2024/06/28(金) 14:29:12.01ID:gjIaTd830
メメント・モリとは、「自分が(いつか)必ず死ぬことを忘れるな」「死を想え」という意味を持つラテン語の言葉
ahk v1が(いつか)必ず死ぬことを忘れるなと言ってるの!
どういう意味があるの?
2024/06/28(金) 15:19:43.34ID:Du02qHB20
そうはならんやろ
2024/06/28(金) 19:19:52.17ID:YeTExmJt0
https://i.imgur.com/QmP3cqa.jpeg
2024/06/29(土) 12:30:26.93ID:ye/c9H2D0
EverythingでAutoHotkeyが無効になるのは仕方ないのでしょうか?
2024/06/29(土) 12:41:24.13ID:vX+4bpnE0
全てのLLフックに勝つデバイスドライバ版ahkを作ってくれ
2024/06/29(土) 12:48:21.18ID:X0n2rMyB0
>>987
バージョン幾つ使ってるのか知らんけど、別に無効にはならんと思うけど
ただEverything自前のホットキー回避のための工夫が必要かもしれんが
いずにせよコードもなんも貼らないんじゃわからんよ
2024/06/29(土) 13:39:11.01ID:VTsLepHm0
>>988
もっとトラブりそう
2024/06/29(土) 13:50:44.28ID:B7anlZDq0
>>989
1.5.0のアルファ版のeverythingだとフック取れるっぽい
2024/06/29(土) 13:59:05.58ID:+H3GV4UI0
>>987
おそらく管理者権限です
基本的に管理者権限で起動されているアプリを操作するにはAHKにも管理者権限を与える必要があります
2024/06/29(土) 14:46:36.74ID:iqncxnkA0
AHKってファイル操作関連で謎のエラーが出ること多いな
ログファイルの出力でエラーが出るのはアクセス頻度が多いからしゃーないかと思っていたが
別に頻度が高くもないFileMoveでも出た
生関数はなるべく使わずリトライ処理を組み込んだユーティリティクラスを使うようにした方がよさそう
2024/06/29(土) 16:25:54.39ID:/XglJ9Zv0
>>993
そう、プログラミングスキル無いと手動でこの処理がめんどい
いつもサボる
いいクラスある?
2024/06/29(土) 17:58:18.26ID:hAnvHTc70
>>994
Errorクラス
2024/06/29(土) 19:00:44.40ID:71z3aF8P0
夏の日の1993
2024/06/30(日) 02:12:50.80ID:JUH7aQw10
AutoHotkey スレッド part34
https://egg.5ch.net/test/read.cgi/software/1719681136/
2024/06/30(日) 03:48:47.22ID:q/9cCDts0
うめ
2024/06/30(日) 03:48:54.39ID:q/9cCDts0
うめ2
2024/06/30(日) 03:49:23.89ID:q/9cCDts0
うめ3
1000
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 158日 11時間 18分 26秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

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