AutoHotkey スレッド part34 (617レス)
上下前次1-新
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
446(1): 10/01(火)23:54 ID:V0wY9dtV0(1) AAS
>>421
ブラウザのタイトルとは、ウェブページのタイトルのこと?
ウェブページのタイトルがセットされるタイミングは固定されていないので、
自分で監視する必要があるよ
JavaScript で動的にタイトルをセットしているウェブページもあるし
447(1): 10/02(水)04:36 ID:I/2evcvZ0(1) AAS
>>441
>>445
たびたびコードまで書いてアドバイス頂きありがとうございます。
保存先が色々異なるのでそのまま保存だと不都合が出てきてしまいます
WinGetTitleでMozillaWindowsClassで取り、
タイトルが空白で無いこと、Urlで無いこと、前のアドレスと同じでないことをまず確認して
1 Ctrl^s送出
2 4秒後待ってSaveのテキストを含む#32770のダイアログがあることを確認し、Ctrl^cでクリップボードにコピー
3 クリップボードを保存先フォルダ名とクリップボードに結合
4 クリップボードを禁則文字チェック←ここでhogehoge.com/hoge/hoge/などの禁則文字で保存時々嵌まってエラーMsgbox出力
省9
448: 10/02(水)05:32 ID:Iof94shX0(1/2) AAS
WinGetListで複数のWindowを全部列挙してウィンドウスタイルでマスクするようにしないと特にブラウザなんかは正しい動作しないぞ
449: 10/02(水)07:28 ID:bDszAASW0(1) AAS
Chrome なら、拡張機能 AutoControl が使いやすいんだけどね。
JavaScript で記述できるし、ページの読み込みイベントも拾ってくれる。
AHK で4秒待つとか、実現できてもスッキリしないよね。
450(1): 10/02(水)13:29 ID:g4durnG80(1) AAS
リマップにしか使ってないけどv2に移行したほうがいいの?
たとえばキー押しっぱなしがなくなるとか安定性が高くなってるなら移行していいかと思ってる
451(1): 10/02(水)14:36 ID:Iof94shX0(2/2) AAS
一部V2にしかない機能もあるので、過去の遺産はV1のまま使い
改修が必要なものや新規に作るものはV2にしてる
452(1): 10/02(水)18:00 ID:Nya46nx90(1) AAS
前スレの225は事実
> v2はメリットしかない
> v1のヘンタイ構文は少しでもプログラミング経験がある人なら発狂して精神に異常をきたす
> v2に移行すれば精神が安定してコードを量産するようになる
リマップにしか使ってないなら移行してもメリットはない
スレでこれだけはやめてっていうのがv2を使えばいいのに使わずv1のヘンタイ構文を質問してくること
v1なんか触ってないっていう
上下前次1-新書関写板覧索設栞歴
あと 165 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.152s*