2017年6月15日木曜日

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

初心者のプログラミング導入のため、自作関数を作って公開しているブログ。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を開く関数


関数群のダウンロードはこちら
func_poku.uwsのコメント欄に呼び出し方が書いてあります。


【関連記事】  [UWSC]firefoxやchromeを操作できるか試してみる関数
[UWSC]カンマ等で区切られたフィールドデータを扱う関数
[UWSC]現在のタイムスタンプ(文字列)を返す関数
[UWSC]タイムアウト関数(作り直し)


スポンサーリンク



blogramのブログランキング

目次
コンピュータ(ハード/ソフト) 映画・ドラマ・芸能 変人のつぶやきとトラブル
ホームへ戻る ページ上部へ


0 件のコメント:

コメントを投稿