「IEでウィンドウ(画面)を閉じる処理」はよくあるパターンなので、共通化すると便利ですね。
ウェブサイトを操作するプログラムなどを作ると、画面(ウインドウ)を閉じる処理を記述することは頻繁にあります。
もちろん、IEでセオリー通りにブラウザを起動した場合は、通常は「IE.quit」で閉じればOKです。
しかし、複数の画面を一気に閉じたいケース等、画面をたくさん開いたりクリックポイントで開く画面など、制御しにくい画面が出たりします。やたら、画面が開くポイントサイトとかあるし・・・。
このような場合は、無駄な画面を一気に閉じたいですね。複数画面(ウィンドウ)をまとめて処理する場合は、「GETALLWIN」で画面を取得して、一気に閉じてあげるのが一番です。
UWSCの「GETALLWIN」で全てのウィンドウを取得→IEの画面をCTRLWINで操作するサンプルコード。
UWSCの「GETALLWIN」で全てのウィンドウを取得し、その後にforループを回して、CTRLWIN(CLOSE)でまとめてクローズします。
例えば、サンプルコードはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | CLOSE_IE("") CLOSE_IE("ポイントサイト") PROCEDURECLOSE_IE(targetSITE) //画面削除PROCEDURE fori=0toGETALLWIN()-1 IFbPOS("iexplore.exe", STRCONV(STATUS(ALL_WIN_ID[i],ST_PATH),SC_LOWERCASE))<>0then IFbtargetSITE=""then // targetSITEが空欄の場合は全ての画面を削除 CTRLWIN(ALL_WIN_ID[i],CLOSE) else // targetSITEが指定されている場合は当該画面のみ削除 IFbpos(targetSITE,STATUS(ALL_WIN_ID[i],ST_TITLE))>0then CTRLWIN(ALL_WIN_ID[i],CLOSE) endif endif endif next FEND |
このサンプルの場合、
CLOSE_IE(“”)と引数無しだと、IEの全画面を閉じる
CLOSE_IE(“ポイントサイト”)とすると、「ポイントサイト」というタイトルの画面のみを閉じる
となります。
もちろん、もっとカスタマイズすれば、いろんな条件などを付けられますね。
また、今回のサンプルでは、「POS(“iexplore.exe”, STRCONV(STATUS(ALL_WIN_ID[i], ST_PATH),SC_LOWERCASE)) <> 0 」としており、「IE」のみを閉じるプログラムになっていますが、もちろん他のウインドウを閉じるようにすることも可能です。
【補足】共通処理のクラス化、プロセス操作による全画面削除について。
今回のような処理は、頻繁に画面を閉じる操作をする場合、共通化しておくのが便利です。UWSCのクラス化については、以下の記事に記載していますので、合わせてご確認ください。

UWSCの共通処理は、別ファイルにクラス化しておくと非常に便利ですよ。
共通処理は別ファイルに部品化しておくと、実装やメンテナンスが効率化できます。 UWSCでスクリプトを作成すると「.UWS」形式のファイルを作成するかと思います。 通常は、目的とする全ての処理をこの「.UWS」のファイルに記述します。 なので...
また、IEがフリーズしてしまったりしている場合は、本記事の処理では閉じられないことがあります。その場合はタスクキルしてみてください。

UWSCでCOMエラーが出たら、初心者が確認すべきチェックリスト。原因不明でもタスクキルで改善する場合もある。
マクロ・スクリプトとしてUWSCを使ってIE処理していると、たまにアプリのCOM_Error、フリーズ、クラッシュ、強制終了などが発生する場合がある。 IEなどの操作をUWSCで実行していると、以下のような現象が発生する場合があります。 「...