初心者のプログラミング導入のため、自作関数を作って公開しているブログ。UWSCからfirefoxやchromeを操作するための準備をしています。今回はタブを新規に作り、目的のページを表示させる関数を作りました。
記事の内容
○firefoxやchromeを制御する関数群(準備二)
新規にタブ作る関数
指定のURLを開く関数
指定のURLを開く関数
ポク太郎です。
難航覚悟で、UWSCからfirefoxやchromeを操作しようとしています。
誤解を招いてはいけないので、再度↓。
現在のブラウザのシェアが大きいのはfirefoxやchromeですが、UWSCはCOMオブジェクト形式を採用しているブラウザ(IEやSleipnir)でないとIDやパスワードをセットする等のアクセスができません。また、取得できるデータが限定されます。
UWSCから操作しやすいのはIEやSleipnirですが、そんなの使いたくありません。UWSCでわざわざfirefoxやchromeを操作するのはよい選択肢とは思えませんが、敢えてイバラの道を進んでみます…。
【ご注意】今後、うまく行かず粉砕されるかもしれません。参考程度にどうぞ。
UWSCから操作しやすいのはIEやSleipnirですが、そんなの使いたくありません。UWSCでわざわざfirefoxやchromeを操作するのはよい選択肢とは思えませんが、敢えてイバラの道を進んでみます…。
【ご注意】今後、うまく行かず粉砕されるかもしれません。参考程度にどうぞ。
新規にタブ作る関数
firefoxもchromeもタブが一つしかない状態で“タブを閉じる”操作をすると、アプリケーション自体が終了してしまいます。そこでUWSCからの指令はすべて新規にタブを作って、作ったタブを操作するという仕様にします。そこで、新規にタブを開く関数を作成しました。
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を開く関数
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を制御する関数群(準備二)
○firefoxやchromeを制御する関数群(準備二)
新規にタブ作る関数
指定のURLを開く関数
指定のURLを開く関数
関数群のダウンロードはこちら。
func_poku.uwsのコメント欄に呼び出し方が書いてあります。
【関連記事】 | [UWSC]firefoxやchromeを操作できるか試してみる関数 |
[UWSC]カンマ等で区切られたフィールドデータを扱う関数 | |
[UWSC]現在のタイムスタンプ(文字列)を返す関数 | |
[UWSC]タイムアウト関数(作り直し) |
0 件のコメント:
コメントを投稿