「ウィンドウ(画面)を閉じる処理」はよくあるパターンなので、共通化すると便利ですね。
ウェブサイトを操作するプログラムなどを作ると、画面(ウインドウ)を閉じる処理を記述することは頻繁にあります。
もちろん、IEでセオリー通りにブラウザを起動した場合は、通常は「IE.quit」で閉じればOKです。
しかし、複数の画面を一気に閉じたいケース等、画面をたくさん開いたりクリックポイントで開く画面など、制御しにくい画面が出たりします。やたら、画面が開くポイントサイトとかあるし・・・。
このような場合は、無駄な画面を一気に閉じたいですね。複数画面(ウィンドウ)をまとめて処理する場合は、「GETALLWIN」で画面を取得して、一気に閉じてあげるのが一番です。
UWSCの「GETALLWIN」で全てのウィンドウを取得→IEの画面をCTRLWINで操作するサンプルコード。
UWSCの「GETALLWIN」で全てのウィンドウを取得し、その後にforループを回して、CTRLWIN(CLOSE)でまとめてクローズします。
例えば、サンプルコードはこんな感じです。
CLOSE_IE("") CLOSE_IE("ポイントサイト") PROCEDURE CLOSE_IE(targetSITE) //画面削除PROCEDURE for i = 0 to GETALLWIN()-1 IFb POS("iexplore.exe", STRCONV(STATUS(ALL_WIN_ID[i], ST_PATH),SC_LOWERCASE)) <> 0 then IFb targetSITE = "" then // targetSITEが空欄の場合は全ての画面を削除 CTRLWIN(ALL_WIN_ID[i], CLOSE) else // targetSITEが指定されている場合は当該画面のみ削除 IFb pos(targetSITE, STATUS(ALL_WIN_ID[i], ST_TITLE)) > 0 then 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の「GETALLWIN」でchromeの全てのウィンドウを閉じるサンプルコード。
ブラウザがchromeやfirefoxの場合も同様です。
プログラムを拾って閉じてやればOKです。
//画面削除 for i = 0 to GETALLWIN()-1 if POS("chrome.exe", STRCONV(STATUS(ALL_WIN_ID[i], ST_PATH),SC_LOWERCASE)) <> 0 then CTRLWIN(ALL_WIN_ID[i], CLOSE) next
【補足】共通処理のクラス化、プロセス操作による全画面削除について。
今回のような処理は、頻繁に画面を閉じる操作をする場合、共通化しておくのが便利です。UWSCのクラス化については、以下の記事に記載していますので、合わせてご確認ください。
また、IEがフリーズしてしまったりしている場合は、本記事の処理では閉じられないことがあります。その場合はタスクキルしてみてください。