自動化ソフト UWSC スクリプト集UWSC はうみうみ屋さん (ハンドル名: umiumi) が作成された Windows 上で動作するアプリケーションです。このアプリケーションの面白い所は、マウスの操作やキーボードのタイピングなどユーザからコンピュータに与える指示を台本 (スクリプト) に書くことによって、UWSC が肩代りしてくれるところです。ユーザからはあたかも自分の化身が操作を自動的に行ってくれるような印象を持ちます。
私はマックを使っていた頃からこの手のユーティリティーが大好きでアップル社の MacroMaker や BINARY ソフトウェア社の KeyQuencer を愛用していました。Windows 上でもこのようなアプリケーションは沢山作られているようですが、私は (1) Microsoft 社の Component Object Model の制御が可能であること、(2) スクリプトがプログラミング言語のプログラムであること、の二点から UWSC を特に気に入っています。
ご紹介するスクリプトは、掲示板に掲載したものや自分が日々の仕事で使っているものです。長いものは 1 年以上使い続けていますが、きびきびした動作に非常に満足しています。いまや自分で使用している Windows PC には、Chombo さんの作られた AltIME と一緒にかならず UWSC をインストールしています。
比較的大きな仕事をこなす UWSC スクリプトをアプリケーションとして紹介します。また UWSC を支援するツールも紹介します。
UWSC doIt tool は、ウインドウ上の選択されたテキストをあたかも UWSC のプログラムのように見立てて実行するための枠組みを提供します。K2Editor, Microsoft Internet Explorer, Notepad で利用できます。
| バージョン: | 0.2 (23rd March, 2003) |
|---|---|
| ダウンロード: | 030323_UWSC_doIt_tool.LZH |
| Document: | 030323_UWSC_doIt_tool.txt |
umiumi さんが管理運営されている掲示板 (HideBBS.NET) に投稿されている記事を HTML ファイルとしてローカル・ディスクに保存格納します。
| バージョン: | 0.3 (26th June, 2003) |
|---|---|
| ダウンロード: | fetch-articles.uws |
UWSC scrample droplet は、ドラッグ&ドロップされた UWSC ファイルにスクランブルをかけるツールです。スクランブルをかけるには、通常コマンドラインから /A オプションを与えて実行します。このツールは、その実行の代行とドラッグ&ドロップのユーザ・インターフェイスを与えるものです。
| バージョン: | 0.1 (5th October, 2003) |
|---|---|
| ダウンロード: | 031005_UWSC_scramble_droplet.LZH |
| Document: | 031005_UWSC_scramble_droplet.txt |
UWSC R option builder は、スクリプトを繰り返して実行するよう な場合において利用者を支援します。 通常コマンドラインなどから -R オプションを与えて実行回数を指示しますが、ここをコンピュータに支援させます。具体的には二つの機能をもつ WSH/JScript スクリプトの生成器(ジェネレータ)を提供します。
| バージョン: | 0.1 (12th October, 2003) |
|---|---|
| ダウンロード: | 031012_UWSC_R_option_builder.LZH |
| Document: | 031012_UWSC_R_option_builder.txt |
umiumi さんや清水さんが管理運営されている掲示板に投稿した記事から、Microsoft Internet Explorer を制御するためのスクリプトの作成に役立つと思われるコードを中心にサンプルスクリプトを集めました。当初は操作の自動化に焦点をあてていましたが現在は Dynamic HTML Object Model に沿って HTML 文書を処理することに注力しています。フォーム記入の自動化などナビゲーション操作の自動化については、KID さんの IEを操作するサブルーチンを利用すると非常に簡潔に台本 (シナリオ) を書くことが出来ます。ぜひご検討ください。
価格.comさんを訪れます。
| バージョン: | 0.1 (25th June, 2003) |
|---|---|
| ダウンロード: | navigate-kakaku.uws |
タイムアウト値を設けてナビゲーションを途中で切り上げるような手続きを組みます。擬似的にロードに時間がかかるCGIを利用して使用法を説明しています。
| バージョン: | 0.1 (26th June, 2003) |
|---|---|
| ダウンロード: | navigate-timeout.uws |
alcさんが提供している英辞郎 on the webサービスを使用する例を通してフォームへのデータ入力の方法を紹介します。
| バージョン: | 0.4 (1st October, 2003) |
|---|---|
| ダウンロード: | alc-dict.uws |
goo さんが提供しているオンライン電子辞書サービスを使用する例を通してフォームへのデータ入力の方法を紹介します。
| バージョン: | 0.4 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | goo-dict.uws |
フレーム中のアンカー (Anchor) をクリックします。清水さんの UWSC スクリプト解説の式に関するページを訪れます。index フレーム中の innerText 属性が "式" であるアンカー・オブジェクトを探して、focus(), click() メッセージを順に送ります。
| バージョン: | 0.4 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | look-up-expr.uws |
ウェブ・サイトのあるアンカー(Anchor)をクリックし、新たに表示されたウインドウの位置をユーザが指定します。角川書店さんの花時間 web gardenを訪れ、today's flower(1日1花)ボタンをクリックし、表示されたウインドウを画面左上(0, 0)に配置します。COM ObjectとWin32 APIの合わせ技で攻めてみました。
| バージョン: | 0.3 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | todays-flower.uws |
TABLEオブジェクトの内容を CSV 形式のファイルに保存します。JRA さんに掲載されている1999年から2003年までの勝ち馬一覧を取得し CSV 形式に変換して保存します。
| バージョン: | 0.3 (25th June, 2003) |
|---|---|
| ダウンロード: | fileout-kachiuma.uws |
OLオブジェクトが所有しているLIオブジェクトを一つ一つ数え上げます。CyberSyndrome さんに掲載されているプロキシ・サーバの一覧を取得してテキストファイルに保存する例を通してLIオブジェクトをどう数え上げるか紹介します。
| バージョン: | 0.3 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | fetch-proxy-servers-list.uws |
Java Appletオブジェクトの public メソッドや public 属性には外部からアクセスすることが出来ます。京都大学の永谷幸則さんが公開されているマンデルブロ集合を描くためのMandelbrot Fractal on JAVA Appletにアクセスする例を通してメソッド起動などの方法を紹介します。
| バージョン: | 0.2 (29th June, 2003) |
|---|---|
| ダウンロード: | invoke-draw.uws |
注目したい語を強調することによって、利用者がテキスト一つ一つを追わずとも簡単に視線をそこに移せるようガイドし心理的な負担の軽減を狙ったユーザ・インタフェースがあります。そのような例として有名なGoogleさんの検索結果のキャッシュ表示時の着色機能に触発され、注目したい語を強調するスクリプトを作成しました。TextRangeオブジェクトに対して背景色および太字の指示を出すことを繰り返します。
| バージョン: | 0.1 (29th June, 2003) |
|---|---|
| ダウンロード: | hilite-keyword-basic.uws |
#4の応用例として、(1) 複数の検索語のサポート、(2) 検索語毎の書式情報設定のサポートを行ったスクリプトを紹介します。このスクリプトでは掲示板に投函した Scripting.Dictionaryオブジェクトを使用した新しいデータ構造も導入しています。CommandDescriptionというデータ構造でsCommand, bUserInterface, vValueの三つのメンバ変数をもちます。
| バージョン: | 0.3 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | hilite-keyword.uws |
ウェブ・サイトの画像 (.jpg) をダウンロードしてファイルに格納します。Component Object Model の Microsoft.XMLHTTP, Adodb.Stream オブジェクトを利用してバイナリファイルを取り扱います。2ch やWSH Lab.掲示板の投函記事を参考にしています。
| バージョン: | 0.2 (29th June, 2003) |
|---|---|
| ダウンロード: | save-source-object-basic.uws |
#6の応用例として、角川書店さんの花時間 web gardenに毎月掲載されている壁紙画像を保存するスクリプトを紹介します。ポータルからダウンロード画面まで移動し、三つの画像サイズをすべてダウンロードして、ダウンロード時間をファイル名に付加して保存します。
| バージョン: | 0.2 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | save-source-object.uws |
アプリケーションを起動する為には EXEC() などを利用します。ここではWin32 APIのShellExecuteA()を使用する方法を考えます。とびたさんが作られた GV に引数を与えてズーム率や起動時のウインドウ位置を指示して起動する方法を紹介します。
| バージョン: | 0.3 (25th June, 2003) |
|---|---|
| ダウンロード: | launch-gv.uws |
Notepad ウインドウの選択範囲の文字列を取得します。UWSC doIt tool のNotepad版の核となる部分でもあります。GetWindow(), SendMessageA() を利用して選択範囲を Notepad のエディット・コントロールに問い合わせ、UWSC の組み込み関数 GETITEM() で得られた全体文字列から選択範囲を切り出します。
| バージョン: | 0.2 (26th June, 2003) |
|---|---|
| ダウンロード: | get-selection-text.uws |
透明ウインドウ (transparent window) を作成します。SetWindowLongA(), GetWindowLongA(), SetLayeredWindowAttributes() の三つを使って実現します。
| バージョン: | 0.3 (19th February, 2004)Updated! |
|---|---|
| ダウンロード: | transparent-window.uws |
| スクリーンショット: | SetLayeredWindowAttribute.JPG (141,029 bytes) |
リージョンを作成してウインドウに貼り付けます。CreateRoundRectRgn(), CombineRgn(), SetWindowRgn() の三つを使って実現します。実行前に GETID() の引数を変更したいウインドウのキャプションに設定しておいてください。
| バージョン: | 0.2 (29th June, 2003) |
|---|---|
| ダウンロード: | round-rect-region.uws |
| スクリーンショット: | CombineTwoRoundRectRegions.PNG (128,123 bytes) |
ご紹介しているサンプルスクリプトの中には、オンライン電子辞書や花言葉データベースなど、商用サイトで一般ユーザに解放されているウェブ・アプリケーションを例題に使っているものがあります。個人使用の範囲を超えてそれらのスクリプトを一般に公開するにあたり私が留意した点をこちらにまとめました。
UWSC を作成し公開されている umiumi さんにお礼を申し上げます。それから umiumi さん、清水さん、しきさんは、掲示板を通じてスクリプトの作成に関して様々な提言を頂きました。また多数スクリプトをウェブ・サイトに公開されており、私のスクリプトはほとんどすべて皆さんのスクリプトがスタート地点でした。この場を借りてお礼を申し上げます。
上記 UWSC スクリプトの著作権は私、入谷和典にあります。当該スクリプトを使用した結果、発生した損害にかんしましては、直接あるいは間接の如何にかかわらず、私、入谷和典は、責任を負いません。各自の責任においてご使用ください。
Last updated: 6th May, 2004.