2017年6月15日木曜日

[UWSC]firefoxやchromeでタブを作ってページを開く関数 [自作関数]

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

記事の内容

○firefoxやchromeを制御する関数群(準備二)
新規にタブ作る関数
指定のURLを開く関数

スマホで閲覧されている方へ
このブログは画面横幅を広くしてあります。スマホ解像度での閲覧は厳しいと思いますので、ウェブバージョンへどうぞ。

ポク太郎です。
難航覚悟で、UWSCからfirefoxやchromeを操作しようとしています。


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

新規にタブ作る関数

firefoxもchromeもタブが一つしかない状態で“タブを閉じる”操作をすると、アプリケーション自体が終了してしまいます。そこでUWSCからの指令はすべて新規にタブを作って、作ったタブを操作するという仕様にします。そこで、新規にタブを開く関数を作成しました。
tab+()関数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FUNCTION tab+()
            id=bid(brwz)
      SELECT brwz
      CASE "firefox"
            SCKEY(id,VK_CTRL,VK_T)
            SLEEP(0.5)//最近のFirefoxは重い
      CASE "chrome"
            SCKEY(id,VK_CTRL,VK_T)
            SLEEP(0.3)
      DEFAULT
            //とりあえず何もしない
      SELEND
            RESULT=1
FEND
関数プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1,14行目1
14
FUNCTION tab+()
FEND
tab+()関数定義:
ブラウザに新規タブを追加する関数。
2行目2            id=bid(brwz)
グローバル変数brwz(ブラウザソフトの名称を設定しておく変数)のIDを得る関数です。前回作成したブラウザのIDを調べる関数です。
3,12行目3
12
      SELECT brwz
      SELEND
グローバル変数brwzに従い処理を選択します。
4~6行目4
5
6
      CASE "firefox"
            SCKEY(id,VK_CTRL,VK_T)
            SLEEP(0.5)//最近のFirefoxは重い
(変数brwz"firefox"だった場合)
FirefoxではCtrl+Tで「新しいタブを作成する」ので5行目でそのショートカットコマンドを送っています。Firefoxのホットキー説明参照。
SCKEY(id,VK_CTRL,VK_T)はUWSCの標準コマンドで、idのアプリケーションに対しショートカット命令を送るコマンドです。
  VK_CTRL …Ctrlキー
  VK_T …Tキー

6行目: 動作完了まで若干時間がかかるので、0.5秒間のSLEEP。
7~9行目7
8
9
      CASE "chrome"
            SCKEY(id,VK_CTRL,VK_T)
            SLEEP(0.3)
(変数brwz"chrome"だった場合)
ChromeではCtrl+Tで「新しいタブを作成する」ので8行目でそのショートカットコマンドを送っています。Chromeのホットキー説明参照。

9行目: 動作完了まで若干時間がかかるので、0.3秒間のSLEEP。
10,11行目10
11
      DEFAULT
            //とりあえず何もしない
(変数brwzそれ以外だった場合)
現状は未定義で何もしないことにしてあります。
13行目13            RESULT=1
関数の戻り値として1を返します。(ダミーです。使い道はまだありません。)




指定のURLを開く関数

bopen()関数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FUNCTION bopen(url)
            id=bid(brwz)
      IF (id<>-1)
            tab+()

            SENDSTR(id,url,1,True)
            SLEEP(0.5)
            SCKEY(id,VK_ENTER)

            RESULT=1
      ELSE
            RESULT=0
      ENDIF
FEND
関数プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1,14行目1
14
FUNCTION bopen(url)
FEND
bopen(url)関数定義:
引数urlを開く関数。
2行目2            id=bid(brwz)
グローバル変数brwz(ブラウザソフトの名称を設定しておく変数)のIDを得る関数です。前回作成したブラウザのIDを調べる関数です。
3,11,13行目3
11
13
      IF (id<>-1)
      ELSE
      ENDIF
変数idによる条件分岐。変数idが-1かどうかで分岐します。
○⇒(ブラウザのIDが得られた場合)
  4~10行目を実行
×⇒(ブラウザのIDが得られなかった場合)
  12行目を実行
4行目4            tab+()
上で作成したtab+()関数を呼び出します。(新規タブを開く)
6~8行目6
7
8
            SENDSTR(id,url,1,True)
            SLEEP(0.5)
            SCKEY(id,VK_ENTER)
6行目: SENDSTR(id,文字列,エディットフィールド番号,送信モードフラグ)はUWSCの標準コマンド。意味は、
   “idのアプリへ指定の文字列を書き込め”。
   ・エディトフィールド番号:左上から数えたエディトコントロールの順番
     指定は1から順番
   ・送信モードフラグ:
     FALSE: 追加 (デフォルト)
     TRUE: 置き換え
6行目は、“idのアプリの一番左上のエディットフィールド(アドレスバー)へ変数url(=この関数の引数urlを置き換えモードで送れ”という意味。
【注意】この例ではエディトフィールド番号を1で指定してありますが、ブラウザをカスタマイズしてGoogleなどの検索窓を左上にしてある場合はアドレスバーの番号は2になりますので適宜修正してください。

7行目: 操作には若干のタイムラグがあるので、0.5秒間のSLEEP。
8行目: 6行目と同じようにVK_ENTER(エンターキー)を送信します。

6~8行目の命令で“アドレスバーにURLを打ち込みENTERキーを押す”という動作になります。
10行目10            RESULT=1
関数の戻り値として1を返します。
12行目12            RESULT=0
関数の戻り値として0を返します。(エラーの意味で0を返しています。)



動作確認

動作確認プログラム
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
   url="http://pokutaro.blogspot.jp/2017/06/uwsc-firefoxchrome-urlopen.html"

   PRINT "----------firefox"
   brwz="firefox"
   path="C:\Program Files\Firefox\firefox.exe"

bstart(path)
SLEEP(2)

bopen(url)

SLEEP(5)
bquit()

   PRINT "----------chrome"
   brwz="chrome"
   path="C:\Program Files\Google\Chrome\Application\chrome.exe"

bstart(path)
SLEEP(2)

bopen(url)

SLEEP(5)
bquit()
動作確認プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1行目1   url="http://pokutaro.blogspot.jp/2017/06/uwsc-firefoxchrome-urlopen.html"
変数urlに開きたいページのURLを代入します。
3~5行目3
4
5
   PRINT "----------firefox"
   brwz="firefox"
   path="C:\Program Files\Firefox\firefox.exe"
firefoxのテストを始める前の変数設定です。
必要な変数を設定します。
15~17行目15
16
17
   PRINT "----------chrome"
   brwz="chrome"
   path="C:\Program Files\Google\Chrome\Application\chrome.exe"
chromeのテストを始める前の変数設定です。
必要な変数を設定します。
7~8,19~20行目7
8
19
20
bstart(path)
SLEEP(2)
bstart(path)
SLEEP(2)
bstart(path)関数に各ブラウザのパスを引数としてあたえます。前回作成したブラウザを立ち上げる関数です。
立ち上がるのに時間がかかるので、次の10行目、22行目の命令へ行く前に2秒間のSLEEPを行っています。
10,22行目10
22
bopen(url)
bopen(url)
作成したbopen()関数に1行目でセットした変数urlを渡します。
(ここでページを開く動作が始まります。)
12~13,24~25行目12
13
24
25
SLEEP(5)
bquit()
SLEEP(5)
bquit()
ページが表示されるまで時間がかかりますので、5秒間のSLEEPを入れてあります。その後、bquit()関数は前回作成したブラウザを終了させる関数で終了させます。

firefox起動→タブを新規で作る→ページ開く→firefox終了→chrome起動→タブを新規で作る→ページ開く→chrome終了と動きました。


記事の内容

記事の内容は伝わりましたでしょうか。
○firefoxやchromeを制御する関数群(準備二)
新規にタブ作る関数
指定のURLを開く関数


【関連記事】
[UWSC]firefoxやchromeの読み込み完了を判定する関数(再)
人気![UWSC]firefoxやchromeを実際にUWSCで操作してみた
人気![UWSC]firefoxやchrome上のリンクやボタン等を調べる方法
[UWSC]firefoxやchromeの読み込み完了を判定する関数
[UWSC]firefoxやchromeの開かれているタブ数を得る関数


スポンサーリンク



↓ Ctrlキーを押しながら ↓

ブログ村へ blogramのブログランキング

ポク太郎の「俺の説明聞いてくれ」 コンテンツ
ポク太郎の「俺の説明聞いてくれ」最キラー記事 IT関連
映画・ドラマ・芸能
ブログ運営
アホの雑記
ホームへ戻る

スポンサーリンク





2 件のコメント :

  1. 何だかよくわからなかったよm(__)m🚩

    返信削除
    返信
    1. >bonnieさん
      これ「UWSC」っていう開発環境向けのプログラミングの記事ですからね。
      それを見たことなければ意味不明だと思います。
      UWSCっていう便利なプログラミングのソフトがあるんですね。

      削除