探検


AutoHotkey スレッド part34

■ このスレッドは過去ログ倉庫に格納されています
2024/06/30(日) 02:12:16.24ID:JUH7aQw10
■公式サイト
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 スレッド part33
https://egg.5ch.net/test/read.cgi/software/1705995058/
2024/09/30(月) 06:03:36.77ID:LOS0OEEa0
AutoHotkeyの使い方5ーウィンドウ・ソフトごとに動作を変えるー | 生焼けプログラマーの雑記帳
https://namayakegadget.com/643/#toc13
長年使っていながら気付かなかったこの挙動
これでようやく眠れる
2024/09/30(月) 10:54:11.72ID:B6OgheLw0
石破が数学とか物理はそもそも問題が理解できず白紙答案と言ってたけど
gendai.media/articles/-/138296
頭が固い文系脳なんじゃねーの?
2024/09/30(月) 11:02:04.98ID:GcmeQ9l90
MouseGestureL使ってるからまだv1
2024/09/30(月) 15:07:00.91ID:LtmJV+xI0
>>407
お前はオレか!?
2024/09/30(月) 15:29:16.61ID:ripDtC5Y0
MGLはフォーラムでユーザーの一人に手伝うからv2に移植してくれと言われて、
今の作者がv2にするつもりはないと断ってたからな
前任者から引き継いだソースがベースで、すべて自分が掌握しているわけではないから、
分からんでもないが、v1がいつ唐突にサポート切られるか分からんし
裏で移植を進めていることを願いたい
2024/09/30(月) 19:21:20.59ID:PF1hAvOv0
v1からv2へ移行したけど
手持ちのまあまあの大きさのスクリプトの移植はコンバータを使ってもちょい大変ではあった
2024/09/30(月) 19:44:16.46ID:jvQxSkbk0
NGLで手伝い申し出た人いたっけ。まあ、作者がv2対応を考えていないなら同じことか
Clipboard Historyも使ってるし、これらを自力でv2仕様にできるとはとても思えんから、まだ当分v1だなぁ
いつの間にかvectorに復活してたenthumbleくらいのならどうにでもできそうというか、
あれをわざわざ使わなくてももっと自分好みにしてるが…
2024/09/30(月) 20:20:03.96ID:VJjKz+c40
>>410
コンバーターって有料のしか見つからないんだけど無料のある?
2024/09/30(月) 20:35:58.71ID:PF1hAvOv0
>>412
https://github.com/mmikeww/AHK-v2-script-converter
私が使ったのはこれですが
説明にある通りある程度自力での修正が必要とされる
2024/09/30(月) 22:04:14.67ID:bByHvbp/0
>>413
というか、
かなりの修正が必要ですね…
2024/09/30(月) 22:06:00.97ID:bByHvbp/0
>>412
有料って?
Quick AHKv2 Converter?
2024/09/30(月) 22:11:51.18ID:M1bCViDB0
>>407
お前はオレか!?
2024/09/30(月) 22:27:30.37ID:3qcKV69w0
つーか、自作のスクリプト類を v1 → v2 に完全に置き換えるとかってのでもない限り、
AHK の v1 と v2 の両方をインストールしときゃそれでおk ちゃうか?
2024/09/30(月) 23:21:41.37ID:1fWbsl/T0
拙者は自作のスクリプトの規模がまだ小さいうちに移行すべきと判断しました
古参の方は大変ですな
2024/10/01(火) 01:44:06.80ID:HV37rj8W0
>>415
それです
>>413は知らなかった

WinGetTitleでタイトルの取りこぼし多数あるんでv2に移行すれば幸せになれるかな?と思ってるんですけど移行面倒臭すぎて

併用試してみます
2024/10/01(火) 12:44:42.33ID:lRpho0BS0
取りこぼしって、AHKの潜在的なバグじゃなくて
正規表現の記述の甘さなんかくるフィルタリングの問題じゃなかろうか
2024/10/01(火) 13:19:54.22ID:dwrWdzvE0
>>420
ブラウザのタイトル取得してクリップボードに入れてるんですけど5%ぐらいの確率で空になってしまいます
2024/10/01(火) 13:25:15.33ID:5grOXHgQ0
>>421
空の場合にもう一度繰り返す処理を入れればいいだけ
2024/10/01(火) 13:31:16.12ID:2QxI47PG0
確率とか言ってないで再現性の検証しなよ
2024/10/01(火) 13:36:09.34ID:lRpho0BS0
>>421
タイトル取得かクリップボードへの送信のタイミングが早すぎるのでは?
各アクション間に200msくらいウェイト入れて様子見てみるといい
問題なければ100msくらいに下げてまた様子見る
2024/10/01(火) 13:43:42.86ID:lRpho0BS0
一応、念のために書いておくけど
ウェイトってsleepのことね
2024/10/01(火) 14:40:50.95ID:FvxXaQDC0
ウェイト(sleep)を知らない人いるのかなっていう気もするがいるんだろうな
AHKはあらゆる場所でsleepを入れないと正常に動かない
1行ごとにsleep(1秒)を入れれば安定するが遅くなるジレンマがある
これは仕様
2024/10/01(火) 14:45:22.15ID:FvxXaQDC0
> Send "abcdefghijklmnopqrstuvwxyz"
> MsgBox "msg"
> 途中までしか送信が入力されないアプリがある
> おかしい

前に投稿したレスだがSendでさえ正常に動かない
2024/10/01(火) 14:52:55.41ID:HmNXYxxa0
>>426
sleepって全体巻き込んで止まるイメージあるから使おうって発想なかったわ
2024/10/01(火) 15:08:03.86ID:dwrWdzvE0
>>422
ブラウザから取れない時はURL返すからそれ以外になったらループ抜けてねってやってる
空白処理入れたら無限ループみたいな症状出て昔鬼ごっこしたけど諦めた
仮想マシン上でやってるんだけど全く出ないマシンと出まくるマシンあって意味分からん

>>424
sleep,4000入れてる
2024/10/01(火) 15:26:59.62ID:lRpho0BS0
直接の原因でないにしろ、4000って入れすぎでしょ
2024/10/01(火) 15:58:35.70ID:qvg844/u0
4秒止まったらストレスになりそう
2024/10/01(火) 16:57:41.65ID:oBJ+4kyU0
単にこういうことじゃないの?
v2 だと try catch で WinGetTitle のエラーハンドリングはできるけど。

WinGetTitle - Syntax & Usage | AutoHotkey v1
https://www.autohotkey.com/docs/v1/lib/WinGetTitle.htm
> Remarks
> If there is no matching window, OutputVar is made blank.
2024/10/01(火) 17:17:10.42ID:dwrWdzvE0
>>430
元々500で駄目だったからどんどん伸ばしてった

>>432
ブラウザ開きっぱなしで新しいタブでページを開くだからブラウザが無いことはありえないんだけど何故か見つからないことになってしまってるのかな
422さんの言うように空の場合またループに戻すことやってみます
2024/10/01(火) 17:57:05.29ID:AxKysytZ0
WinGetTitleの前にWinExistとかでチェックはしていないですか
してないならば、WinExistで見てみることで何かわかるかもしれないな
2024/10/01(火) 18:07:44.77ID:C+MHvTF60
>>419
WinGetTitleの取得の成否にSleepの有無は関係ないかと思います
必要な情報がないので推測ですが、WinGetTitleの取りこぼしと言うのはウィンドウが見つからないとか取得に失敗しているのではなく
タイトルのない別のウィンドウを取得しているだけだと思います

AHKのウィンドウ指定では条件に当てはまるウィンドウが複数存在する場合、Z-Orderが若い方が優先され対象となります
ブラウザがChromeやEdgeであれば、ポップアップウィンドウのクラス名と実行ファイル名は同じになるので
例として、F1:: MsgBox(WinGetTitle("ahk_class Chrome_WidgetWin_1 ahk_exe chrome.exe"))
のような指定では実行時にコンテキストメニューやマウスオーバーによるツールチップのようなポップアップウィンドウが存在する場合、そちらが優先されるので、結果は空文字になります
これを回避するためには、WinGetListで該当するウィンドウのHwndを全て取得した後、ウィンドウスタイルで絞り込むなどの方法が必要になります

ついでに、ウィンドウ指定について述べておきますが、Chromium系のクラス名は通常「Chrome_WidgetWin_1」であるため、クラス名のみの指定では他のアプリがヒットする可能性があります
また、>>405で紹介されている所のようにahk_exeだけの指定では、DetectHiddenWindowsがオフであっても、アプリによってはサイズが0,0のサブウィンドウが存在したり
マルチプロセスによるウィンドウ内ウィンドウがヒットしたりする可能性もあるため、注意が必要です
具体例として、エクスプローラーの指定が"ahk_exe explorer.exe"では正常に動作しませんが、これはタスクバーとProgram Manager(デスクトップ)もexplorer.exeによるウィンドウであるためです
2024/10/01(火) 18:08:30.09ID:C+MHvTF60
>>426
あらゆる場所にSleepがないとまともに動作しないなんて仕様はありませんし、Sleepが必要な場合はほとんどがAHK側の問題ではなく、アプリ側またはシステム上の問題です
また、Sleepが必ずしも動作の安定に繋がるとは限りません
0以上のSleepが実行された場合、CPUのタイムスライスの割当てが次のスライス以降となるため、AHKに限らず他のスレッドによる割り込みが発生しやすくなり
コードの実行結果が一定ではなくなるなどの可能性が出てくるので、動作上でSleepが必要な場合は明確な意図と効果を伴って使用すべきです


>>427
おそらくアプリ側のメッセージ処理か入力処理の問題なので、とりあえず
SetKeyDelay(, 50)
SendEvent("abcdefghijklmnopqrstuvwxyz")
で入力が正常に行われるか試してみてください
2024/10/01(火) 18:14:22.46ID:lRpho0BS0
>>433
話を総合すると、仮想環境で動かしているにしてもだよ
500msのsleepで動かなくて、4000msだと95%の確率で動くってことでしょ
どういうコード書いているのか知らんけど、ちょっと挙動がおかしいよ
2024/10/01(火) 18:20:25.22ID:dY8/Ql770
クリップボードの中身を監視したら?
2024/10/01(火) 18:43:44.20ID:dwrWdzvE0
>>435
詳しい解説ありがとうございます
ブラウザはPale moonと言うfirefoxベースのブラウザです
ツールチップ不具合身に覚えあります

WinGetList試してみます
2024/10/01(火) 19:42:28.90ID:osCUHTkq0
>>439
もしかして、最近のアップデートで?

AHKじゃなく、Firefoxの問題
2024/10/01(火) 20:38:22.05ID:C+MHvTF60
>>439
Pale Moonは使用してないので正しいか分かりませんが
FireFox系ならメインのウィンドウクラスは「MozillaWindowClass」
ポップアップウィンドウのクラスは「MozillaDropShadowWindowClass」なので
WinGetListを使わずともクラス名まで指定すれば区別できると思います
逆にクラス名で指定しているにも関わらず、タイトルが取得できないことがある場合は別の所に原因があります
2024/10/01(火) 21:19:00.80ID:HV37rj8W0
>>440
いえ前からです

>>441

WinGetTitle,palemoontitle,ahk_class MozillaWindowClass,
WinActivate,%palemoonTitle%
2024/10/01(火) 21:19:20.25ID:HV37rj8W0
ごめんなさい書き直します
2024/10/01(火) 21:23:50.57ID:HV37rj8W0
途中で誤爆すみません

>>441
今はブラウザにアドレス送ったあとで4秒待ち、
WinGetTitle,palemoontitle,ahk_class MozillaWindowClass,
WinActivate,%palemoonTitle%
でタイトル取得、
Ctrl^sを送ったあとで4秒待ち、
WinGetTitle,savetitle,ahk_class #32770,
IfInString, saveTitle,Save
でSaveが含まれた保存ダイアログが出てくるのを待ち、Enterキー送ってます
2024/10/01(火) 22:11:08.20ID:C+MHvTF60
>>444
palemoonのウィンドウタイトルが取れていないのではなく、ダイアログ待ちで別のダイアログがヒットしているような気がします
とりあえず、開いたウェブページを保存するという挙動で良いのであれば、以下のような方法で良いと思います
F1::
; Run, %URL%
; ここにSleepを入れるか、完全にページの読み込みを待つのであれば、ImageSearchかブラウザ系のライブラリ、またはAccかUIAなどのライブラリを使用する必要があります
ControlSend, ahk_parent, ^s, ahk_class MozillaWindowClass
WinWaitActive, Save ahk_class #32770 ahk_exe palemoon.exe ; 実行ファイルがpalemoon.exeではない場合変更してください
; Send, {Enter}
MsgBox, テスト
Return
446名無しさん@お腹いっぱい。
垢版 |
2024/10/01(火) 23:54:53.14ID:V0wY9dtV0
>>421
ブラウザのタイトルとは、ウェブページのタイトルのこと?

ウェブページのタイトルがセットされるタイミングは固定されていないので、
自分で監視する必要があるよ
JavaScript で動的にタイトルをセットしているウェブページもあるし
2024/10/02(水) 04:36:36.17ID:I/2evcvZ0
>>441
>>445
たびたびコードまで書いてアドバイス頂きありがとうございます。
保存先が色々異なるのでそのまま保存だと不都合が出てきてしまいます
WinGetTitleでMozillaWindowsClassで取り、
タイトルが空白で無いこと、Urlで無いこと、前のアドレスと同じでないことをまず確認して
1 Ctrl^s送出
2 4秒後待ってSaveのテキストを含む#32770のダイアログがあることを確認し、Ctrl^cでクリップボードにコピー
3 クリップボードを保存先フォルダ名とクリップボードに結合
4 クリップボードを禁則文字チェック←ここでhogehoge.com/hoge/hoge/などの禁則文字で保存時々嵌まってエラーMsgbox出力
5 禁則文字が無ければCtrl^vとEnterキー送って保存してます

多分2の時にChromeやFirefoxなどのブラウザでタブにマウスを合わせた時にWebpageタイトルが表示される小さなテキストをWindowと勘違いして空白か古いままのクリップボードを返してるだと思います

教えていただいたWinGetListなのですがVer1の場合、WinGetTitleでできませんか?
SpyかけてみたらSaveダイアログはMozillaDropShadowWindowClassではなく#32770と表示されます
こちらがアクティブになってからクリップボード操作やってるつもりなのですが時々コケます

>>446
Webページのタイトルです
でもリダイレクトはありますが途中でタイトルが変わるサイトではありません
リダイレクト対策も兼ねて長めにSleep入れてます
2024/10/02(水) 05:32:28.13ID:Iof94shX0
WinGetListで複数のWindowを全部列挙してウィンドウスタイルでマスクするようにしないと特にブラウザなんかは正しい動作しないぞ
2024/10/02(水) 07:28:11.75ID:bDszAASW0
Chrome なら、拡張機能 AutoControl が使いやすいんだけどね。
JavaScript で記述できるし、ページの読み込みイベントも拾ってくれる。
AHK で4秒待つとか、実現できてもスッキリしないよね。
2024/10/02(水) 13:29:33.86ID:g4durnG80
リマップにしか使ってないけどv2に移行したほうがいいの?
たとえばキー押しっぱなしがなくなるとか安定性が高くなってるなら移行していいかと思ってる
2024/10/02(水) 14:36:41.30ID:Iof94shX0
一部V2にしかない機能もあるので、過去の遺産はV1のまま使い
改修が必要なものや新規に作るものはV2にしてる
2024/10/02(水) 18:00:55.97ID:Nya46nx90
前スレの225は事実
> v2はメリットしかない
> v1のヘンタイ構文は少しでもプログラミング経験がある人なら発狂して精神に異常をきたす
> v2に移行すれば精神が安定してコードを量産するようになる

リマップにしか使ってないなら移行してもメリットはない

スレでこれだけはやめてっていうのがv2を使えばいいのに使わずv1のヘンタイ構文を質問してくること
v1なんか触ってないっていう
2024/10/02(水) 19:08:37.05ID:Za7Y0ZGq0
>>447
ウェブページを保存する際にメインブラウザからURLをpalemoonに渡して(またはその逆)保存しているという使い方をしていると推測します
そうであるなら、まずはWinGetTitleなどのコマンドのウィンドウ指定は全て ahk_class MozillaWindowClass ahk_exe palemoon.exe
のようにクラス名とExe名を併記するように指定してください

以前にも書きましたがFireFox系であればこの件についてはWinGetList + スタイルによる絞り込みは必要ありません
ちなみにv1のWinGetListは WinGet, OutputVar, List, WinTitle という記述になり、OutputVar1のように疑似配列として扱います

そもそもとして、ウィンドウタイトルの取得の目的が保存名に指定するためなのであれば、ウィンドウタイトルを取得する必要はないと思います
保存ダイアログのクラス名が#32770という事はWindowsの標準ダイアログが呼び出されているだけなので、ControlGetText、ControlSetTextなどが使用できます
通常であれば、ウェブページの保存名の初期値は禁則処理された状態のページタイトル + 拡張子がデフォルトなので、変更が必要な場合こちらを取得して改変したほうがスマートです
つまり、WinGetTitleも必要なければ、途中でコピペにウェイトが必要なクリップボードの操作も必要ないので、余計な要因が介入してくるのを減らすコーディングが可能と言う事です
全体の流れとしては下記のように出来るはずです

; Run, [palemoon.exeのフルパス] %URL%
; Sleep, 1000
ControlSend, ahk_parent, ^s, ahk_class MozillaWindowClass ahk_exe palemoon.exe
WinWaitActive, Save ahk_class #32770 ahk_exe palemoon.exe
ControlGetText, save_title, Edit1, ahk_class #32770 ahk_exe palemoon.exe
; 保存先を手動で変更するならここでsave_title内を編集出来るような処理を入れる
; 既存のフォルダがないとダイアログのEdit部分でパス指定できないのでとりあえずMyDocument\ウェブページ\にsave_titleから拡張子を除いたフォルダを作成
FileCreateDir, % save_path := A_MyDocuments "\ウェブページ\" RegExReplace(save_title, "i)\.[^\.]+?$")
ControlSetText, Edit1, % save_path "\" save_title, ahk_class #32770 ahk_exe palemoon.exe
; Send, {Enter}
2024/10/02(水) 19:46:58.04ID:acuRfLjr0
>>452
触ってる人が答えれば良いと思うんだけど、なんでそんなに食ってかかってんだ???
455名無しさん@お腹いっぱい。
垢版 |
2024/10/02(水) 20:51:31.41ID:M9c5GeZ+0
>>450
安定性とかは変わらないんじゃないだろうか
現在使っているv1のスクリプトを編集せず使い続けるだけなら、移行は必要ないと思う

編集・新規作成の必要が生じたときに移行すればよいんじゃないだろうか
2024/10/03(木) 00:16:46.17ID:Jt0Di29D0
>>451
V2にしかない機能とは?
利用価値のあるもので
2024/10/03(木) 00:54:28.74ID:Tz6rTMiT0
UTF8ファイル読み込む時とかBOMの有無とかV1だと制限があった気がする
2024/10/03(木) 01:09:21.08ID:WYl35//N0
>>456
https://ahkscript.github.io/ja/docs/v2/v2-changes.htm
新機能のご紹介
新しいディレクティブ
2024/10/03(木) 02:42:29.78ID:Jt0Di29D0
>>457
そうなんだ

最近v2に移植したわ
BOM付きで
2024/10/04(金) 03:38:03.71ID:NhPmv6xu0
>>453
たびたびありがとうございます
palemoon本体には教えていただいたコードできちんと操作できました
ダイアログへControlGetText,SetTextやコンボボックスの選択はできるのですがボタン押したり、キー送出ができないです
これはSendコマンドでやるしかないでしょうか

ControlSend, ahk_class #32770 ahk_exe palemoon.exe,!y,
これだとAlt+!送られないです
2024/10/04(金) 18:36:12.70ID:V34s0CwZ0
>>460
パラメータの指定が間違っています
ControlSend [,Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]

!yを送りたいと言う事であれば、たぶん上書き確認のダイアログだと思うのですが
この手の確認ダイアログは、アクティブ最前面で表示されるので単に Send, y でも大丈夫なはずです

ControlSendでボタンを押すのであればControlに 「Button1」 などのClassNNか 「はい(Y)」 などのテキストを指定してください
送るキーは{Enter}や{Space}などでも構いません
ControlSendはWin32 APIによるGUI以外では、親ウィンドウに対してしか効果がないですが
Win32GUIの場合、フォーカスが対象ウィンドウの別のボタン等にある場合、大抵はフォーカスがあるボタンが指定したControlよりも優先されて押されます
YesNoダイアログの場合、初期状態では通常はNoにフォーカスがあるのでControlSendを送る前にYesにフォーカスをセットする必要があります

また、いずれにせよWinWaitで対象ウィンドウの出現を待ったほうが良いです
その際に、前に書いた時は省きましたがWinWait系のコマンドはタイムアウトを指定しておいた方が良いでしょう
まとめると下記のようになります。firefoxの部分は書き換えてください

; ファイルダイアログで保存を押した後に
WinWait, 名前を付けて保存の確認 ahk_class #32770 ahk_exe firefox.exe, , 2
if(ErrorLevel){
MsgBox, タイムアウトしました
Return
}
ControlFocus, Button1, 名前を付けて保存の確認 ahk_class #32770 ahk_exe firefox.exe
ControlSend, Button1, {Enter}, 名前を付けて保存の確認 ahk_class #32770 ahk_exe firefox.exe
2024/10/04(金) 19:19:10.83ID:fR4T6nrD0
>>461
また詳しく教えていただきありがとうございます
出先なのであとでチェックします

名前をつけて保存ダイアログにSend,!sを送って保存しようとすると1%ぐらいの確率で保存ボタンにフォーカスが移るだけで押せないことがあるので嵌まってます
教えていただいたWinWaitのhelp見たらWinWaitCloseコマンドあったのでどちらも実装して試してみます
2024/10/05(土) 01:29:49.17ID:ffwymIic0
v2使ってみたらもう戻れないくらい便利です
ぐい周りは感動した
2024/10/05(土) 11:12:03.05ID:wFIatvKw0
指定のアプリ群をグルーピングして、それらだけまとめてキー操作を統一的に扱いたい
こんな要望を実現できるのはV2だけ
2024/10/05(土) 17:46:33.00ID:EvXhaPGA0
v2で文法がマシになったと聞いてドキュメント見たらif文の等価条件が=なのかよ
そこは==だろう
2024/10/05(土) 18:08:10.14ID:ABL2Y4hI0
==は既に使われているし、代入が:=なんだから
別に文句付けるようなことじゃないな
代入が=なら==で分かるけど
2024/10/05(土) 19:45:14.72ID:7uPQ3bfS0
v1もv2も==も等価条件で=と==の用途の違いは同じ
下手に変えるほうが混乱する
2024/10/05(土) 21:04:53.07ID:BfmCDP890
簡単にGUIが作れるからいいね〜
そこに情報いれてデバッグ的なことも
2024/10/05(土) 21:20:26.81ID:ZqQVtnYk0
自分はデバッグにToolTipを多用してるわ
2024/10/05(土) 22:06:03.49ID:Em/TLP060
比較はだいたいCase Sensitiveの==を使っているなあ
それにあわせてNot equalもCase Sensitiveで書くと!==になるが…
2024/10/06(日) 12:24:53.26ID:7QdW2jH00
Enter::
WinClose,A
Return
こういう単純な処理の場合にreturnって必要ですか
472名無しさん@お腹いっぱい。
垢版 |
2024/10/06(日) 12:57:01.02ID:1y8Ea0fn0
コパイロットにautohotkeyでディスプレイ切り替えの質問したらアナログな方法しか教えてくれなかったわ…
DisplaySwitch.exeなんて便利なコマンドあるんじゃねーか。
マイクロソフト製なくせにwindowsコマンド優先しないとか…
俺が学習することを優先したとか言いやがってAIはまだまだだな。
473名無しさん@お腹いっぱい。
垢版 |
2024/10/06(日) 13:00:16.93ID:1y8Ea0fn0
>>471
AutoHotkeyのスクリプトで、単純な処理の場合でもReturnは必要です。Returnはスクリプトの終了を明示的に示すため、スクリプトの動作を予期せぬエラーから守る役割があります。
コパイロットより
474名無しさん@お腹いっぱい。
垢版 |
2024/10/07(月) 00:02:46.97ID:cU7U0bdE0
>>471
必要

1行で書くなら return は不要
Enter::WinClose,A

v2 だと以下のように書けてとてもわかりやすい

```
Enter::{
WinClose('A')
}
```
475473
垢版 |
2024/10/07(月) 08:46:31.72ID:7zfB35Dh0
コパイロットも1行では不要です、AutoHotkey v2では、ブロック構文を使うことでReturnを省略できます、だって
コパイロットよ、どっちなんだい
2024/10/08(火) 07:11:01.64ID:PJm4zAM/0
>>474
何も知らないなら何も言わないほうが良いぞ
馬鹿がバレるから
477名無しさん@お腹いっぱい。
垢版 |
2024/10/08(火) 07:44:51.38ID:a+1T31eg0
新手の荒らしか?
2024/10/08(火) 11:24:24.22ID:g9vwOZ7j0
>>461
その後、色々試したのですが保存ボタンを押せないことが稀にあります
なのでLoopをかけて#32770がまだあったら2秒sleepかけて再度保存ボタンを押すのLoopを5重ぐらいにかけたらほぼノンストップで運用できるようになりました

実コードなど詳しい解説ありがとうございました
2024/10/08(火) 11:29:37.32ID:f7+Mss5f0
CPU利用率が高く処理が追いついてないときにWindowsはマウスやキーボードで行ったユーザー命令を無視する説ですべての説明がつく
2024/10/09(水) 12:32:31.05ID:cX4bOXdE0
これをAHKv2でどうやって実装すればいいじゃろか

直前に入力した単語を大文字にする
https://zenn.dev/vim_jp/articles/2024-10-07-vim-insert-uppercase
2024/10/09(水) 12:59:44.57ID:ljiV3D/d0
How to Describe a Person in English: Phrases For Appearance
2024/10/09(水) 13:47:02.71ID:EDPVs9XS0
>>480
真面目に実装しようとすると AHK だけじゃ無理(のはず)。

"autohotkey get text cursor position" あたりでググるか(多分 v2 でお手軽に
使えるリソースは見つからないと思う。cursesライブラリィみたいな巨大なもの
ならあったかな?)、
https://www.scintilla.org/index.html が使えるエディタ環境なら、SciTE を
DllCall 経由で使う。

「単語単位を適当でいいや」にするなら、"^{Right}"、"^{Left}" で代用。
2024/10/09(水) 14:10:59.27ID:Ni5X0cgM0
>>480
C-lを押すとVim scriptが動くようになってる
AHKv2でSend "^l"とすればいい
ショートカットキーでアプリ側のスクリプトが起動するようにしておく
2024/10/09(水) 15:50:52.36ID:jbkbVU700
AHKV1でtest_で始まる関数を列挙するってできる?

ソースコードをスキャンするというのはなしで

#include込みのすべてのソースコードを合体して文字列配列で取得する方法があるならそれでもいいけど
2024/10/10(木) 01:57:48.90ID:gju2+YZb0
>>480
んーむずかしいかー

とりあえず、
・IMEで文字列を選択して再変換
・普通に選択して置換 RegExReplace("asdf-fdsa-hauhntkl", "s).+", "$U{0}")
・エディタのマクロ
2024/10/10(木) 02:25:42.96ID:FDERPLBs0
>>480
>直前に入力した単語を大文字にする
これは例えばメモ帳使ってる時に実現したい、、、ってこと?
要するに『IMEが日本語入力状態だと思って書き込んだら英小文字が入力されていたので、再入力せずに直前の文字を日本語に直したい ※』
の日本語にするんじゃなく英小文字を英大文字にするってこと?
だとしたらかなり前の過去スレに ※ のv1用コード貼られてるからそれを改造すればいけそう

https://web.archive.org/web/20181230010420/http://anago.5ch.net/test/read.cgi/software/1367725658/
の164-165

ちなみに個人的にこれ改造してv1で今も使ってる(MGLのプラグイン化して)

よく分からずレスしてるんでやりたいことと違ってたらすまん
2024/10/10(木) 12:40:28.96ID:ellHKC8G0
>>480
www.autohotkey.com/boards/viewtopic.php?f=83&t=132338
ちょっと前に見かけたこのライブラリを使えば出来るんじゃないかな? と思って、試しにいじってみたらそれっぽいことはできました
細かい検証とかはしていないので使用上の弊害などは分かりません

#Include XHotstring.ahk
XHotstring.ResetKeys := "{Left}{Right}{Up}{Down}{Next}{Prior}{Home}{End}{Space}{Enter}" ; 適用範囲をリセットするキー デフォルトでは{Space}{Enter}がなかったので追加
XHotstring(":*:(.+)@@", "$U1") ; 任意の文字列入力後、@二度押しで適用範囲内文字列を大文字に変換


>>484
AHKのプロセスメモリ内をスキャンすれば可能かもしれませんが、ソースコードの解析が一番簡単だと思います
Includeファイルについては#IncludeがあればInclude先もスキャンすれば良いだけです
v2なら特定クラス内のメソッドとかであれば列挙可能ですが、スクリプト全体から列挙する方法はv1と同様です
488名無しさん@お腹いっぱい。
垢版 |
2024/10/13(日) 16:38:44.70ID:PDT1mwa30
MPRESSがもうダウンロードできなくなってるけど誰かくれんかね?
489名無しさん@お腹いっぱい。
垢版 |
2024/10/14(月) 03:02:35.98ID:KcUraxAC0
USキーボードのCAPSLOCKキーをIME切り替えにしたいのですが、
CAPSLOCKをF14にした上で

;;;IME切り替え
F14::
send,!{vkC0}
return

で今まで切り替えていたのですが、IME切り替えがよくバグってALTキーが押しっぱなしにされてしまいます。
!{vkC0}を使わずにIME切り替えする方法ないでしょうか?
2024/10/14(月) 09:14:44.58ID:nKp0lMeM0
>>489
ちょっと記憶が定かではないけれど、その手の AHK での修飾キー押しっぱ問題は
AHK側だけでは確実な対処は無理ちゃうかったかな?
(たいてい CapsLock/LCtrl 入れ替えでハマるw)

他のツール類(Change Keyとか)で、通常のキーボードにはないキー(F13~F24)を
CapsLock に割り当てておいて、AHK 側ではそのキーに対する処理にするのが常道とか。

↓あたりでググってみれば、色々参考になるはず。
ahk key押しっぱなし - Google 検索
https://www.google.com/search?q=ahk+key%E6%8A%BC%E3%81%97%E3%81%A3%E3%81%B1%E3%81%AA%E3%81%97
2024/10/14(月) 10:00:54.67ID:/NO+1EDo0
ime.ahk
492480
垢版 |
2024/10/14(月) 15:20:19.95ID:nE+HVhlV0
>>487
おーすげー出来た
発火タイミングはどうすればいい?

大文字にしたかった場合は大抵事後だから
2024/10/14(月) 18:55:17.01ID:EkA47qEQ0
>>488
www.autohotkey.com/mpress/
↑のmpress.219.zip


>>489
{vkF3}か{vkF4}を送ればいいはずです


>>492
発火タイミングと言うのがコードを実行する位置のことであれば
常駐が前提のスクリプトなので通常のホットキーやホットストリングと同様に、事前登録しておくと言う感じです
ただし、それらと違いclassなのでAutoExecute-Sectionに書くか、ホットキー内に書いて手動でやるかして、前もって1度実行されている必要があるだけです
494名無しさん@お腹いっぱい。
垢版 |
2024/10/14(月) 19:00:08.71ID:gcJe/yFu0
>>493
mpressリンクありがとん🥺
2024/10/15(火) 16:22:01.12ID:ORDFOdoA0
パッケージマネージャー出来てた
https://github.com/Descolada/Aris
2024/10/15(火) 16:37:29.80ID:RhyIvNKJ0
>>495
↑
何これ?
2024/10/15(火) 17:10:13.39ID:1PWT48kg0
それはレスアンカーといって、そのレスがどの書き込みに対する返信なのかを明示するための書式です
2024/10/15(火) 18:45:30.71ID:G8EFpNqS0
質問をみるといつも思うのだが他者の労働力を搾取しようとするなとだけ
自分で調べて発表せよ
それが社会貢献
2024/10/15(火) 18:53:18.50ID:0VL5Czli0
>>496
なんの変哲もないgithubのページだから開いて翻訳して読んどき
2024/10/18(金) 22:59:14.66ID:ROfzVtWS0
質問させてください。
Enterを押した後にSpaceを押す機能を右ボタンに割り当てたいのですが、どうすればよろしいでしょうか?

Right::
Send, {Enter}
Send, {Space}
return

Right::
Send, {sc01C}
Send, {sc039}
return

どちらもメモ帳では動作するのですが、アプリケーション上では反応しません。
2024/10/19(土) 09:43:45.73ID:gTKdgegr0
メモ帳もアプリケーションなんですがね
それはともかく入力の受付はアプリごとに制御されているので
例えばinputしか受け付けないとか、高速入力できないように制限してあるとか
様々なケースがあるので試行錯誤するしかない
うまく動作しない謎アプリを晒さない限りそれ以上のことは何とも
2024/10/19(土) 14:41:27.03ID:lTux8SgV0
初心者だよね?
v2から学ぶべき
v1は忘れていい
503名無しさん@お腹いっぱい。
垢版 |
2024/10/19(土) 19:23:02.29ID:zWBtD9Ow0
中身がAHKらしいクリップボード拡張ソフトを使っています。
定型文を入力するために独自のメニューを呼びし、
アクセスキーを使って入力しています。

例 「 挨拶文 (&A) | おはようございます | KeyStroke 」

呼び出したメニューには「挨拶文(A)」と表示され、
「A」を押すと「おはようございます」が出力されます。

動作自体は思い描いた通りなのですが、
アクセスキーである「(A)」もメニューに表示されるのを邪魔に感じています。

この「(&A)」の部分を「アクセスキーとして機能するがメニューでは非表示にする」
という方法があれば御教示いただけないでしょうか。
御存じの方がいらっしゃればお願いします。
2024/10/19(土) 20:06:36.72ID:rU9ISZOb0
英語なら&AisatubunでAに下線がつくだけで困らない
■ このスレッドは過去ログ倉庫に格納されています

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