AutoHotkey スレッド part34 (618レス)
上下前次1-新
426(2): 10/01(火)14:40 ID:FvxXaQDC0(1/2) AAS
ウェイト(sleep)を知らない人いるのかなっていう気もするがいるんだろうな
AHKはあらゆる場所でsleepを入れないと正常に動かない
1行ごとにsleep(1秒)を入れれば安定するが遅くなるジレンマがある
これは仕様
427(1): 10/01(火)14:45 ID:FvxXaQDC0(2/2) AAS
> Send "abcdefghijklmnopqrstuvwxyz"
> MsgBox "msg"
> 途中までしか送信が入力されないアプリがある
> おかしい
前に投稿したレスだがSendでさえ正常に動かない
428: 10/01(火)14:52 ID:HmNXYxxa0(1) AAS
>>426
sleepって全体巻き込んで止まるイメージあるから使おうって発想なかったわ
429: 10/01(火)15:08 ID:dwrWdzvE0(2/4) AAS
>>422
ブラウザから取れない時はURL返すからそれ以外になったらループ抜けてねってやってる
空白処理入れたら無限ループみたいな症状出て昔鬼ごっこしたけど諦めた
仮想マシン上でやってるんだけど全く出ないマシンと出まくるマシンあって意味分からん
>>424
sleep,4000入れてる
430(1): 10/01(火)15:26 ID:lRpho0BS0(4/5) AAS
直接の原因でないにしろ、4000って入れすぎでしょ
431: 10/01(火)15:58 ID:qvg844/u0(1) AAS
4秒止まったらストレスになりそう
432(1): 10/01(火)16:57 ID:oBJ+4kyU0(1) AAS
単にこういうことじゃないの?
v2 だと try catch で WinGetTitle のエラーハンドリングはできるけど。
WinGetTitle - Syntax & Usage | AutoHotkey v1
外部リンク[htm]:www.autohotkey.com
> Remarks
> If there is no matching window, OutputVar is made blank.
433(1): 10/01(火)17:17 ID:dwrWdzvE0(3/4) AAS
>>430
元々500で駄目だったからどんどん伸ばしてった
>>432
ブラウザ開きっぱなしで新しいタブでページを開くだからブラウザが無いことはありえないんだけど何故か見つからないことになってしまってるのかな
422さんの言うように空の場合またループに戻すことやってみます
434: 10/01(火)17:57 ID:AxKysytZ0(1) AAS
WinGetTitleの前にWinExistとかでチェックはしていないですか
してないならば、WinExistで見てみることで何かわかるかもしれないな
435(1): 10/01(火)18:07 ID:C+MHvTF60(1/4) AAS
>>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」であるため、クラス名のみの指定では他のアプリがヒットする可能性があります
省3
436: 10/01(火)18:08 ID:C+MHvTF60(2/4) AAS
>>426
あらゆる場所にSleepがないとまともに動作しないなんて仕様はありませんし、Sleepが必要な場合はほとんどがAHK側の問題ではなく、アプリ側またはシステム上の問題です
また、Sleepが必ずしも動作の安定に繋がるとは限りません
0以上のSleepが実行された場合、CPUのタイムスライスの割当てが次のスライス以降となるため、AHKに限らず他のスレッドによる割り込みが発生しやすくなり
コードの実行結果が一定ではなくなるなどの可能性が出てくるので、動作上でSleepが必要な場合は明確な意図と効果を伴って使用すべきです
>>427
おそらくアプリ側のメッセージ処理か入力処理の問題なので、とりあえず
SetKeyDelay(, 50)
SendEvent("abcdefghijklmnopqrstuvwxyz")
で入力が正常に行われるか試してみてください
437: 10/01(火)18:14 ID:lRpho0BS0(5/5) AAS
>>433
話を総合すると、仮想環境で動かしているにしてもだよ
500msのsleepで動かなくて、4000msだと95%の確率で動くってことでしょ
どういうコード書いているのか知らんけど、ちょっと挙動がおかしいよ
438: 10/01(火)18:20 ID:dY8/Ql770(1) AAS
クリップボードの中身を監視したら?
439(2): 10/01(火)18:43 ID:dwrWdzvE0(4/4) AAS
>>435
詳しい解説ありがとうございます
ブラウザはPale moonと言うfirefoxベースのブラウザです
ツールチップ不具合身に覚えあります
WinGetList試してみます
440(1): 10/01(火)19:42 ID:osCUHTkq0(1) AAS
>>439
もしかして、最近のアップデートで?
AHKじゃなく、Firefoxの問題
441(3): 10/01(火)20:38 ID:C+MHvTF60(3/4) AAS
>>439
Pale Moonは使用してないので正しいか分かりませんが
FireFox系ならメインのウィンドウクラスは「MozillaWindowClass」
ポップアップウィンドウのクラスは「MozillaDropShadowWindowClass」なので
WinGetListを使わずともクラス名まで指定すれば区別できると思います
逆にクラス名で指定しているにも関わらず、タイトルが取得できないことがある場合は別の所に原因があります
442: 10/01(火)21:19 ID:HV37rj8W0(2/4) AAS
>>440
いえ前からです
>>441
WinGetTitle,palemoontitle,ahk_class MozillaWindowClass,
WinActivate,%palemoonTitle%
443: 10/01(火)21:19 ID:HV37rj8W0(3/4) AAS
ごめんなさい書き直します
444(1): 10/01(火)21:23 ID:HV37rj8W0(4/4) AAS
途中で誤爆すみません
>>441
今はブラウザにアドレス送ったあとで4秒待ち、
WinGetTitle,palemoontitle,ahk_class MozillaWindowClass,
WinActivate,%palemoonTitle%
でタイトル取得、
Ctrl^sを送ったあとで4秒待ち、
WinGetTitle,savetitle,ahk_class #32770,
IfInString, saveTitle,Save
でSaveが含まれた保存ダイアログが出てくるのを待ち、Enterキー送ってます
445(1): 10/01(火)22:11 ID:C+MHvTF60(4/4) AAS
>>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, テスト
省1
上下前次1-新書関写板覧索設栞歴
あと 173 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.010s