[過去ログ] 自動化ツールUWSC使いよ集まれ23 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
208
(1): (ワッチョイ 8b11-cChY) 2020/11/23(月)00:49 ID:nMyW2Dzt0(1/6) AAS
GETCTLHND(ID,"MozillaWindowClass")の戻り値がちんぷんかんぷん
IDが-1(GETIDの結果が取得できなかった)のときにハンドル値が出てくる(一つ目の画面?)
IDが1とかだと0が返ってくる・・・何で?
結果的に指定したい画面のハンドルが取れない助けて
209: (ワッチョイ 8b11-cChY) 2020/11/23(月)01:00 ID:nMyW2Dzt0(2/6) AAS
んん?そもそもGETID("画面の名前","MozillaWindowClass")で正しくIDが取れてない???
1が戻り値になっているけどGETID(GET_ACTIVE_WIN)で調べたら5になってる
MozillaWindowClassってのがそもそも間違ってるのかな?
素人にもわかりやすくして・・・
210: (ワッチョイ 8b11-cChY) 2020/11/23(月)10:40 ID:nMyW2Dzt0(3/6) AAS
handleの値がそもそもひとつしか返ってこないけどどうやって複数タブのひとつを操作すれば良いんだろう?
211
(1): (オッペケ Srdf-SERc) 2020/11/23(月)13:28 ID:+L/v6CSQr(1/2) AAS
あのう
for i=1 to 10
next
msgbox (i)
↑ なんで11になるの?
212: (オッペケ Srdf-SERc) 2020/11/23(月)13:37 ID:+L/v6CSQr(2/2) AAS
n =0
for i=1 to 10
n=n+1
next
msgbox (i+"と"+n)
↑なんで11と10になるの?
213: (ワッチョイ c3ca-n9sk) 2020/11/23(月)13:55 ID:vNWGvqDz0(1) AAS
n =0
for i=1 to 10
n=n+1
print i
print n
next
msgbox (i+"と"+n)
214
(1): (ワッチョイ 1bbe-/cpS) 2020/11/23(月)14:06 ID:Jr5WoWvF0(1) AAS
>>211
判定箇所の問題だと思う
つまり i が11になったから抜ける
i が10になったからこれで最後という判定をすると、最後を示すフラグかなにかが必要になる

こういう話で良く出てくるのが Whileループと Untilループの違い
検索して説明を読んで
Forループは Whileループの簡易版としてとらえれば納得しやすい

なお Forと Whileにも違いがある
カウンタ変数(その例では i )の中身はループを抜けたら保証されない
UWSCでは11になるようだけど
省1
215: (ワッチョイ fb0c-dKXD) 2020/11/23(月)14:30 ID:hg61gNoS0(1/2) AAS
>>214
判定箇所じゃなくて言語仕様の問題でしょ。

FOR I=0 TO 10 STEP 3
NEXT

て書いたら、I=0、3、6、9、12…となってI=10にマッチしない。
1. 無限ループになっちゃう言語(「=」で比較)
2. 最終値を越えた時点で抜ける言語(「<」で比較)
3. 最終値と同じか超えた時点で抜ける言語(「<=」で比較)
UWSCは2.。

VBScript が同じ挙動をするから、VBライクな動きをするようにしたんじゃない?
216: (ワッチョイ fb0c-dKXD) 2020/11/23(月)14:41 ID:hg61gNoS0(2/2) AAS
ちなみに、超大昔の BASIC だと NEXT のところで値を評価してたっぽい。
そういう意味では「判定箇所」も間違いじゃなかったね。

FOR 文のところで判定すると実装が楽になるからそうしたのかもだけど、
構文のせいで FOR を抜けた後の I の値が直観的に分かりにくくなってるやね。

他の言語なら
for ($i = 0; $i <10; $i++)
って「<」を明示するから、 for を抜けたときの $i は 10 になる、って見て分かる。
217: (ワッチョイ 57b1-b6az) 2020/11/23(月)15:31 ID:+VWU57aQ0(1) AAS
てか、for で使った i を抜けてから使うコードは書くべきじゃない
218: (ワッチョイ c356-b6az) 2020/11/23(月)15:33 ID:lYl5Sjn20(1) AAS
ループ変数をループ外で使うべきじゃないって教訓でしょ
219
(1): (ワッチョイ 8b11-cChY) 2020/11/23(月)15:37 ID:nMyW2Dzt0(4/6) AAS
firefoxで画面をふたつ開いていると片方しか調べてくれない
GETCTLHND(ID,"MozillaWindowClass")のIDに何セットしても0か一種類の値しか返ってこない
何で?
220
(1): (ワッチョイ 8b11-cChY) 2020/11/23(月)16:01 ID:nMyW2Dzt0(5/6) AAS
解決したけど納得いかない
GETIDが成立していれば、GETCTLHNDしなくて良いってことに・・・
どうして先人たちのサンプルはGETCTLHNDを使っているんだろう?
221
(1): (アウアウウーT Sa3b-C6sL) 2020/11/23(月)16:26 ID:HQ7cA91ta(1/3) AAS
>>219
>firefoxで画面をふたつ開いていると片方しか調べてくれない
てのはウィンドウを2つ開いているとということか
タブを2つ開いているとということか
たぶんタブなんだろうけど
タブをいくつ開いていても"MozillaWindowClass"のウィンドウは
一つのインスタンスに2つしかない
GETALLWIN()して
ALL_WIN_ID[] の中身を
STATUS( id, ST_TITLE)
省4
222
(1): (アウアウウーT Sa3b-C6sL) 2020/11/23(月)16:42 ID:HQ7cA91ta(2/3) AAS
>>208
>IDが-1(GETIDの結果が取得できなかった)のときにハンドル値が出てくる(一つ目の画面?)
ハンドル値ってウィンドウハンドルをIDTOHND()でとってるってこと?
無効な値を引数にしても有効な値は返ってこない
223
(1): (ワッチョイ 8b11-cChY) 2020/11/23(月)17:38 ID:nMyW2Dzt0(6/6) AAS
>>221
>>222
firefoxで画面ふたつ表示してそれぞれソシャゲ開いて、それぞれ用のマクロ組んで同時実行したら両方とも動く状態にならなくて困り果ててたって話
あちこちのサイトを見て
GETIDしてGETCTLHNDしてMOUSEORG(はんどる,MORG_DIRECT,MORG_BACK)してっていう流れになってたから逆らわずにその通りにしてたら、
?GETIDが取得できたときにGETCTLHNDで0が戻り値になっててMOUSEORGが正しく動作せず
?GETIDが取得できなかったときにGETCTLHNDに-1が渡ってて戻り値が存在してMOUSEORGが動作したけど片方しか機能しなかった
?のときに1画面にタブをまとめたら動かなかった方も動き出したので希望を感じたけど当然もう片方が裏(隣のタブ)で動き続けることはなかった
GETCTLHNDに-1を渡したときに返ってくるhandle値が何者なのかは知らない
紆余曲折した結果、両マクロとも動作してくれるようになった
省1
224: (ワッチョイ 7776-b6az) 2020/11/23(月)20:40 ID:mwnZugnN0(1) AAS
ウィンドウ2つ開いてるなら単純に

w_id=GETID("ウィンドウ名")
mouseorg(w_id,2,MORG_BACK)

でいいんじゃないの
ウィンドウ名はctrl+sでページ保存するときのデフォルト名だから簡単にコピペできるし
225
(1): (アウアウウーT Sa3b-C6sL) 2020/11/23(月)23:48 ID:HQ7cA91ta(3/3) AAS
>>223 を読んで不思議に思い
firefoxで適当なページを表示して
MSGBOX(STATUS(HNDTOID(GETCTLHND(-1,"MozillaWindowClass"),ST_TITLE))
を実行したら面白いことがわかった
-1だと全体から"MozillaWindowClass"クラスのもの拾ってくるんだな
226: (アウアウウーT Sa3b-C6sL) 2020/11/24(火)00:00 ID:gWTirf+fa(1) AAS
>>225
誤:MSGBOX(STATUS(HNDTOID(GETCTLHND(-1,"MozillaWindowClass"),ST_TITLE))
正:MSGBOX(STATUS(HNDTOID(GETCTLHND(-1,"MozillaWindowClass")),ST_TITLE))
227
(1): (ワッチョイ f781-FP8+) [あげ] 2020/11/25(水)18:23 ID:BYFSqSBg0(1) AAS
for n=1 to 10
THREAD 別吹(n+"回目のるーぷ",200,200)
sleep(1)
next

PROCEDURE 別吹(せりふ,横,縦)
FUKIDASI(せりふ,横,縦,1,24,"Meiryo_UI",$FFFFFF,$4763FF,0)
SLEEP(1.5)
FEND
↑なんで10回目のるーぷだけ9回目の裏に早く表示されて、しかも右に5mmずれるの?
1-
あと 775 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.013s