前回と同様に最初に1回だけラベリング処理を行います。このファイルをエディタで開くと、次のようなファイルになっていると思います。(test1.uws)
ACW(GETID("GMAIL - SEARCH RESULTS FOR: FROM:((@MAG2.COM MAG2 ID)) -LABEL:M_MAG2 IS:UNREAD - LUNASCAPE","LunascapeMainWnd"),-4,4,1032,748,0) BTN(LEFT,CLICK,192,247,234) BTN(LEFT,CLICK,703,217,156) BTN(LEFT,CLICK,727,384,324) BTN(LEFT,CLICK,697,350,543)
GETID文はGmailのウィンドウのIDを取得する文で、第1引数が含まれるウィンドウのウィンドウIDを返します。Gmailがラベリング処理を行っている最中のタイトルバーに注目すると、GETID文の第1引数が含まれている事がわかります。ただし、第1引数と全く同じというわけではないと思います。多分第1引数のis:unreadの後に1%とか2%とか処理の進み具合を示す文字が挿入されている事と思います。ラベリング処理が終われば、タイトルバーの内容は第1引数と全く同じになるはずです。
そこで、タイトルバーの内容が第1引数と全く同じになるまでは次の処理に進まない様にします。test1.uwsではGETID文は引数を2つ取っていますが、これに第3引数(-1)を追加します。こうすることで、ウィンドウが元の状態に戻るまで、つまりラベリング処理が正常に終了するまで、処理を止めることができます。例えば次のようにするということです。(test2.uws)
ACW(GETID("GMAIL - SEARCH RESULTS FOR: FROM:((@MAG2.COM MAG2 ID)) -LABEL:M_MAG2 IS:UNREAD - LUNASCAPE","LunascapeMainWnd","-1"),-4,-4,1032,748,0) BTN(LEFT,CLICK,192,247,234) BTN(LEFT,CLICK,703,217,156) BTN(LEFT,CLICK,727,384,324) BTN(LEFT,CLICK,697,350,543)
test2.uwsを実行すると思ったようには動いてくれないと思います。その原因はGETID文が入っているACW文にあります。ACW文は第1引数で与えられたウィンドウのサイズを変化させるための文ですが、これはウィンドウサイズが変化しようがしまいが戻り値は変化しません。そのため、タイトルバーに含まれる文字列を絶対指定した(つまり完全一致するまで待った)としても、処理(マウスボタンをクリックする処理)は次に進み、ラベリング処理を待ったことにはならないからです。
GETID文は戻り値に真と偽を取るので、GETID文をIFB文の条件式に含めて、ラベリング処理をIFB文で囲みます。(test3.uws)
IFB GETID("GMAIL - SEARCH RESULTS FOR: FROM:((@MAG2.COM MAG2 ID)) -LABEL:M_MAG2 IS:UNREAD - LUNASCAPE","LunascapeMainWnd","-1") THEN ACW(GETID("GMAIL - SEARCH RESULTS FOR: FROM:((@MAG2.COM MAG2 ID)) -LABEL:M_MAG2 IS:UNREAD - LUNASCAPE","LunascapeMainWnd","-1"),-4,-4,1032,748,0) BTN(LEFT,CLICK,192,247,234) BTN(LEFT,CLICK,703,217,156) BTN(LEFT,CLICK,727,384,324) BTN(LEFT,CLICK,697,350,543) ENDIF
IFB文の条件式が真になるまで、つまりGmailウィンドウのタイトルバーが元に戻りラベリング処理が終わるまで、IFB文中のラベリング処理は行われません。さらにタイトルバーの文字が元に戻るまで無限に待ち続けるので、たとえ処理が100秒かかろうが3秒で終わろうが、終わった瞬間に次の処理に移ることができます。