[UWSC]firefoxやchromeの開かれているタブ数を得る関数

UWSCという開発ソフトを使って作り上げる作業を実際にやってみるカテゴリ。準備した自作関数や使い方、トラブルを記事にしていきます。得るものがあれば幸いです。
UWSCからfirefoxやchromeを操作するための準備をしています。今回は、現在表示されているタブの数を調べる関数を作りました。

記事の内容
○firefoxやchromeを制御する関数群(準備三)

ALL_ITEM_LISTを調べる関数
タブの数を返す関数

ポク太郎です。
UWSCでfirefoxやchromeの現在表示されているタブの数を得る関数を作りました。

——追記(FireFoxの制御に関して)
2017年10月初にFireFoxv56、11月中にv57Quantum(←爆速です)がリリースされました。

少し触ってみたところアクセスビリティの仕様が変更になっているようで、現状のUWSCでは制御できないようです。これはUWSCの対応待ちとなります。(対応するかどうかわかりませんが)

誤解を招いてはいけないので、こちら↓。

現在のブラウザのシェアが大きいのはfirefoxやchromeですが、UWSCはCOMオブジェクト形式を採用しているブラウザ(IEやSleipnir)でないとIDやパスワードをセットする等のアクセスができません。また、取得できるデータが限定されます。
UWSCから操作しやすいのはIEやSleipnirですが、そんなの使いたくありません。UWSCでわざわざfirefoxやchromeを操作するのはよい選択肢とは思えませんが、敢えてイバラの道を進んでみます…。
【ご注意】今後、うまく行かず粉砕されるかもしれません。参考程度にどうぞ。

※1 以前からの記事の自作関数等が前提になっておりますので、意味不明な関数が出てきたらこちらを参照して下さい。

ALL_ITEM_LISTを得る関数

UWSCはアプリケーションのIDを渡すことで、ボタンやリストボックス、ポップアップメニューにどんなアイテムがあるのかを調べることができ、また、それらを操作することができます。
ここでは、そのリストALL_ITEM_LISTを得る関数を作成しました。

bitem()関数
1
2
3
4
5
6
7
8
9
10
FUNCTION bitem(kind)
            id=bid(brwz)
      IF (id<>1)
            GETITEM(id,kind)
            RESULT=SLICE(ALL_ITEM_LIST,0,length(ALL_ITEM_LIST)1)
      ELSE
            DIM x[0]=
            RESULT=SLICE(x,0,length(x)1)
      ENDIF
FEND
関数プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1,10行目1
10
FUNCTION bitem(kind)
FEND
bitem(kind)関数宣言:UWSCから見えるALL_ITEM_LISTを取得する関数。
引数kindITM_BTNITM_LINKITM_TABITM_EDITITM_ACCCLKITM_ACCLINKなどアイテムの種類を指定する。
2行目2            id=bid(brwz)
変数idにブラウザのアプリケーションIDを代入。これは自作関数(※1)
3,6,9行目3
6
9
      IF (id<>1)
      ELSE
      ENDIF
条件分岐:
(ブラウザが立ち上がっている)⇒ 4、5行目
(ブラウザが立ち上がっていない)⇒ 7、8行目
4,5行目4
5
            GETITEM(id,kind)
            RESULT=SLICE(ALL_ITEM_LIST,0,length(ALL_ITEM_LIST)1)
ALL_ITEM_LISTを得る部分。
GETITEM(id,kind):idで指定されたアプリ上のアイテム(種類はkindで指定)を取得するUWSCの命令。実行すると特殊配列ALL_ITEM_LISTに代入されます。
5行目で、ALL_ITEM_LISTの全要素を関数の戻り値として返します。
7,8行目7
8
            DIM x[0]=
            RESULT=SLICE(x,0,length(x)1)
配列の要素を1つにし、内容を空白にして戻り値として返します。



タブの数を返す関数

上で作った関数を使って、現在ブラウザ上に開かれているタブの数を数えます。

tabn()関数
1
2
3
4
FUNCTION tabn()
            tab=bitem(ITM_TAB)
            RESULT=ubound(tab)+1
FEND
関数プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1,4行目1
4
FUNCTION tabn()
FEND
tabn()関数宣言:現在ブラウザ上に開かれているタブの数を得る関数。
2,3行目2
3
            tab=bitem(ITM_TAB)
            RESULT=ubound(tab)+1
変数tabに上で作成した関数の戻り値を代入。引数はITM_TABを指定します。
変数tabには、表示されている各ページのタイトルが入ります。



動作確認

動作確認
1
2
3
4
5
6
7
8
      kind=ITM_TAB
      tabname=bitem(kind)
      PRINT ↓タブの名前
   FOR i=0 TO LENGTH(tabname)1
      PRINT tabname[i]
   NEXT
      PRINT タブの数↓
      PRINT tabn()
動作確認プログラム説明
1~6行目1
2
3
4
5
6
      kind=ITM_TAB
      tabname=bitem(kind)
      PRINT ↓タブの名前
   FOR i=0 TO LENGTH(tabname)1
      PRINT tabname[i]
   NEXT
変数kindITM_TABとし、先に作成した関数でALL_ITEM_LISTが取得できているかを確認します。
関数の戻り値を配列tabname[]に代入し、表示させます。
7,8行目7
8
      PRINT タブの数↓
      PRINT tabn()
タブの数を返す関数tabn()を確認します。
戻り値を表示させます。


確認結果
—↓タブの名前—
Blogger: ポク太郎の「俺の説明聞いてくれ」 – 投稿を作成
[UWSC]firefoxやchromeでタブを作ってページを開く関数 [自作関数]
—タブの数↓—
2

開いていたタブ名が正しく表示され、正しく2つとカウントされました。

記事の内容は伝わりましたでしょうか。
○firefoxやchromeを制御する関数群(準備二)

新規にタブ作る関数
指定のURLを開く関数

コメント

タイトルとURLをコピーしました