拙作スクリプトの活用事例

 

目次

UWSCコードの断片生成器fcuc 活用事例 [メモ帳の操作]  2009/1/17()

UWSCコードの断片生成器fcuc 活用事例 [タスクバーアイコンの操作]  2009/1/17()

UWSCコードの断片生成器fcuc 活用事例 [btn()関数を相対座標指定で使う]  2009/1/18()

 

 

UWSCコードの断片生成器fcuc 活用事例 [メモ帳の操作]  2009/1/17()

 

【概要】

以下の処理を行うスクリプトを作成する。

メモ帳を開いて『あけましておめでとう』を入力して保存する。

 

【前提条件】

l        UWSC がインストールされており、拡張子 uws がUWSCへ関連づけされている。UWSC Pro/Free どちらでも可。

l        UWSCコードの断片生成器 fcuc がインストールされている。(090117版使用)

l        使用ソフトは、UWSC V4.43 | WinXP Professional SP3。他のOS の場合は、適宜読み替えること。

 

【手順】

〜導入部の作成〜

1.     メモ帳を開く。

2.     文字列[abc]を入力する。入力文字列は何でも良い。

3.     fcuc を起動する。

4.     [x  秒後に取得を開始します。]が表示されたら、メモ帳をアクティブにする。

→やがて情報取得が始まり、取得経過を示すメッセージが画面上部に表示される。

→取得が終わると、ファイル[x_無題_-_メモ帳_Notepad.log]がデスクトップに作成され、開く。

([x]は任意の数字が付与される)(以下「ログファイル1」と記載する。)

5.     デスクトップにファイル[test.uws]を作成し、エディタで開く。

6.     ログファイル1の先頭部分の[status()情報より汎用記述]の部分に注目し、下の2行をtest.uwsへコピーする。

exec("C:\WINDOWS\system32\notepad.exe")

id=getid("無題 - メモ帳","Notepad")

7.     ログファイル1を文字列[abc]で検索する。

→数行がヒットするが、その中で、下に注目する。

getstr(id,1,STR_EDIT)="abc"          // sendstr(id,"abc",1,TRUE)

 

sendstr(id,"abc",1,TRUE)

これを↓

sendstr(id,"あけましておめでとう",1,TRUE)

へ書き換えて、test.uwsの末尾へ追加する。

 

この時点のtest.uwsの内容

exec("C:\WINDOWS\system32\notepad.exe")

id=getid("無題 - メモ帳","Notepad")

sendstr(id,"あけましておめでとう",1,TRUE)

8.     これを保存し、開いているメモ帳をすべて閉じて、test.uws を起動する。

→メモ帳が開き、"あけましておめでとう"が入力される。

9.     ログファイル1内を文字列[名前を付けて保存]で検索する。

→下がヒットする。

ALL_ITEM_LIST[3]="ファイル\名前を付けて保存"       clkitem(id,"ファイル\名前を付けて保存",CLK_MENU)

このうち

clkitem(id,"ファイル\名前を付けて保存",CLK_MENU)

test.uwsの末尾へ追加する。

 

この時点のtest.uwsの内容

exec("C:\WINDOWS\system32\notepad.exe")

id=getid("無題 - メモ帳","Notepad")

sendstr(id,"あけましておめでとう",1,TRUE)

clkitem(id,"ファイル\名前を付けて保存",CLK_MENU)

10. これを保存し、開いているメモ帳をすべて閉じて、test.uws を起動する。

→メモ帳が開き、"あけましておめでとう"が入力され、"名前を付けて保存"の窓が開く。

 

〜保存処理の作成〜

11. "名前を付けて保存"の窓の[ファイル名]欄に文字列[def]を入力する。([Enter]は押さない。)入力文字列は何でも良い。

12. fcuc を起動する。

13. [x  秒後に取得を開始します。]が表示されたら、"名前を付けて保存"の窓をアクティブにする。

→ファイル[x_名前を付けて保存_#32770.log]がデスクトップに作成され、開く。(以下「ログファイル2」と記載する。)

14. ログファイル2の先頭部分の[status()情報より汎用記述]の部分に注目し、下の1行をtest.uwsへコピーする。

 

id=getid("名前を付けて保存","#32770")

これを↓

id2=getid("名前を付けて保存","#32770")

へ書き換えて、test.uwsの末尾へ追加する。ログファイル1は1つ目の窓、ログファイル2は2つ目の窓。複数の窓は区別する必要がある。

15. ログファイル2を文字列[def]で検索する。

16. 数行がヒットするが、その中で、下に注目する。

getstr(id,1,STR_EDIT)="def"          // sendstr(id,"def",1,TRUE)

 

sendstr(id,"def",1,TRUE)

これを↓

sendstr(id2,"c:\test\年賀.txt",1,TRUE)

へ書き換えて、test.uwsの末尾へ追加する。

17. c:\test が存在しない場合は作成しておく。保存先フオルダ名とファイル名はどこでも良い。

18. ログファイル2を文字列[保存]で検索する。

19. 数行がヒットするが、その中で、下に注目する。

ALL_ITEM_LIST[0]="保存"        clkitem(id,"保存",CLK_BTN)

 

clkitem(id,"保存",CLK_BTN)

これを↓

clkitem(id2,"保存",CLK_BTN)

へ書き換えて、test.uwsの末尾へ追加する。

 

この時点のtest.uwsの内容

exec("C:\WINDOWS\system32\notepad.exe")

id=getid("無題 - メモ帳","Notepad")

sendstr(id,"あけましておめでとう",1,TRUE)

clkitem(id,"ファイル\名前を付けて保存",CLK_MENU)

id2=getid("名前を付けて保存","#32770")

sendstr(id2,"c:\test\年賀.txt",1,TRUE)

clkitem(id2,"保存",CLK_BTN)

20. これを保存し、開いているメモ帳をすべて閉じて、test.uws を起動する。

→メモ帳が開き、c:\test に 年賀.txt が保存される。

21. 保存処理は成功したかに見えるが、もう一度 test.uws を起動すると、

→『名前を付けて保存"-"c:\test\年賀.txt は既に存在します。上書きしますか?』が表示される。

      この窓への対処は、後回しにする。

 

〜残っている窓を閉じる処理の作成〜

22. ログファイル1を文字列[メモ帳の終了]で検索する。

→下がヒットする。

ALL_ITEM_LIST[6]="ファイル\メモ帳の終了"           clkitem(id,"ファイル\メモ帳の終了",CLK_MENU)

このうち

clkitem(id,"ファイル\メモ帳の終了",CLK_MENU)

これをtest.uwsの末尾へ追加する。

この時点のtest.uwsの内容

exec("C:\WINDOWS\system32\notepad.exe")

id=getid("無題 - メモ帳","Notepad")

sendstr(id,"あけましておめでとう",1,TRUE)

clkitem(id,"ファイル\名前を付けて保存",CLK_MENU)

id2=getid("名前を付けて保存","#32770")

sendstr(id2,"c:\test\年賀.txt",1,TRUE)

clkitem(id2,"保存",CLK_BTN)

clkitem(id,"ファイル\メモ帳の終了",CLK_MENU)

23. これを保存し、c:\test\年賀.txt を削除する。

24. 開いているメモ帳をすべて閉じて、test.uws を起動する。

→メモ帳が一瞬開き、すぐに閉じる。c:\test に 年賀.txt が保存される。

 

〜仕上げ〜

      それらしいスクリプトが出来た。最後の仕上げは、fcuc を頼らずに行う。

 

dim strFile="c:\test\年賀.txt"

dim strMsg="あけましておめでとう"

if fopen(strFile,F_EXISTS) then doscmd("del "+strFile, TRUE)

exec("notepad.exe")

id=getid("無題 - メモ帳","Notepad")

sendstr(id,strMsg,1,TRUE)

clkitem(id,"ファイル\名前を付けて保存",CLK_MENU)

id2=getid("名前を付けて保存","#32770")

sendstr(id2,strFile,1,TRUE)

clkitem(id2,"保存",CLK_BTN)

clkitem(id,"ファイル\メモ帳の終了",CLK_MENU)

      ファイルがすでに存在する場合に備えて、保存前にファイルを削除するようにした。

 

以上

 

 

UWSCコードの断片生成器fcuc 活用事例 [タスクバーアイコンの操作]  2009/1/17()

 

【概要】

以下の処理を行うスクリプトを作成する。

タスクバーのアイコンをクリックする。

 

【前提条件】

l        UWSC がインストールされており、拡張子 uws がUWSCへ関連づけされている。UWSC Pro/Free どちらでも可。

l        UWSCコードの断片生成器 fcuc がインストールされている。(090117版使用)

l        使用ソフトは、UWSC V4.43 | WinXP Professional SP3。他のOS の場合は、適宜読み替えること。

l        スタートメニューはクラシックスタートメニュー」が指定されていることとするXPの通常の「[スタート]メニュー」では挙動が異なるので、本稿では除外する。

 

【手順】

1.      [スタート]-[設定]-[コントロールパネル]-[サウンドとオーディオ デバイス]-[サウンドとオーディオ デバイスのプロパティ]-[音量]-[タスクバーに音量アイコンを配置する]にチェックを付ける。

→タスクバー音量アイコン現れる。

2.     fcuc を起動する。

3.     [x  秒後に取得を開始します。]が表示されたら、[Windows]キーを押す。または[スタート]ボタンをクリックする。

[スタート]メニューが開く。

4.     [スタート]メニューが開いた状態で放置する。

→やがて情報取得が始まり、取得経過を示すメッセージが画面上部に表示される。

3秒以内にうまく操作ができない場合は、fcuc.uws に /w オプションを付けて起動すると良い。

→取得が終わると、ファイル[x__Shell_TrayWnd.log]がデスクトップに作成され、開く。

([x]には任意の数字が付与される)(以下「ログファイル1」と記載する。)

5.     デスクトップにファイル[test.uws]を作成し、エディタで開く。

6.     ログファイル1の先頭部分の[status()情報より汎用記述]の部分に注目し、下をtest.uwsへコピーする。

id=getid("","Shell_TrayWnd")

7.     ログファイル1の中の[getitem()  clkitem()]の部分に注目し、ITM_TOOLBAR のところからそれらしいものを探す。

→下が目を引く。

 ALL_ITEM_LIST[10]="音量"      clkitem(id,"音量",CLK_TOOLBAR)

そのうち

Clkitem(id,"音量",CLK_TOOLBAR)

これをtest.uwsの末尾へ追加する。

この時点のtest.uwsの内容

id=getid("","Shell_TrayWnd")

clkitem(id,"音量",CLK_TOOLBAR)

8.     これを保存し、開いているメモ帳をすべて閉じて、test.uws を起動する。

[音量]を含む窓が表示する。

 

ひとまず左クリックなら、目的達成。

右クリック処理を記述するなら、ヘルプを見て変更する。

 

id=getid("","Shell_TrayWnd")

clkitem(id,"音量",CLK_TOOLBAR or CLK_RIGHTCLK)

sckey(0, O)

9.     これを起動する。

[マスター音量]の窓が表示する。

 

以上

 

 

UWSCコードの断片生成器fcuc 活用事例 [btn()関数を相対座標指定で使う]  2009/1/18(眠)

 

【概要】

以下の処理を行うスクリプトを作成する。

コントロールパネルの[日付と時刻]の[インターネット時刻]タブをbtn()関数で選ぶ。

該当タブは、clkitem() や sckey()で選べる。なので実用としてはbtn()関数はお勧めできない。しかし、アプリケーションの中には、clkitem()が効かず、ショートカットキーも用意されていないものもある。そのような場合に備えた事例研究としてあえて本稿ではbtn()関数を扱う。

 

【前提条件】

l        UWSC がインストールされており、拡張子 uws がUWSCへ関連づけされている。UWSC Pro/Free どちらでも可。

l        UWSCコードの断片生成器 fcuc がインストールされている。(090117版使用)

l        使用ソフトは、UWSC V4.43 | WinXP Professional SP3。他のOS の場合は、適宜読み替えること。

 

【手順】

〜導入部の作成〜

    コントロールパネルアイテムの多くは、コマンドラインから起動できる。その方法を探るところから始める。

1.     『日付と時刻 コマンドライン』という言葉でクグる。

[timedate.cpl] というコマンドラインが探り当たる。

2.     [Windows]キーと[R]を同時押し。

[ファイル名を指定して実行]の窓が開く。

3.     [ファイル名を指定して実行]の名前欄に[timedate.cpl]を入力し、[Enter]を押す。

[日付と時刻のプロパティ]の窓が開く。[timedate.cpl]が使えることが分かる。

4.     fcuc を起動する。

5.     [x  秒後に取得を開始します。]が表示されたら、[日付と時刻のプロパティ]の窓をアクティブにする。

→やがて情報取得が始まり、取得経過を示すメッセージが画面上部に表示される。

→取得が終わると、ファイル[x_日付と時刻のプロパティ_#32770.log]がデスクトップに作成され、開く。

([x]は任意の数字が付与される)(以下「ログファイル1」と記載する。)

6.     デスクトップにファイル[test.uws]を作成し、エディタで開く。

7.     [doscmd("timedate.cpl",TRUE)]を入力する。

8.     ログファイル1の先頭部分の[status()情報より汎用記述]の部分に注目し、下をtest.uwsへコピーする。

id=getid("日付と時刻のプロパティ","#32770")

 

この時点のtest.uwsの内容

doscmd("timedate.cpl",TRUE)

id=getid("日付と時刻のプロパティ","#32770")

9.     これを保存し、[日付と時刻]の窓を閉じて、test.uws を起動する。

[日付と時刻のプロパティ]の窓が開く。

 

btn()関数によるクリック動作部の作成〜

10. fcuc を起動する。

11. [x  秒後に取得を開始します。]が表示されたら、[日付と時刻のプロパティ]の窓をアクティブにする。

12. さらに[インターネット時刻]のタブの四角形の中央にマウスカーソルを合わせる。

 

→やがて情報取得が始まり、取得経過を示すメッセージが画面上部に表示される。

→取得が終わると、ファイル[x_日付と時刻のプロパティ_#32770.log]がデスクトップに作成され、開く。

 (以下「ログファイル1B」と記載する。)

      前の手順で生成されたものと別名で保存される場合と、同名で上書き保存される場合がある。

13. ログファイル1内を文字列[btn]で検索する。

→下の2行がヒットする。

btn(LEFT,CLICK,status(id,ST_X)+(-164),status(id,ST_Y)+382)

btn(LEFT,CLICK,status(id,ST_CLX)+(-167),status(id,ST_CLY)+360)

14. 下をtest.uwsへコピーする。(ヒットした2行はどちらを採用しても動作結果は同じ。どちらでも構わない。)

btn(LEFT,CLICK,status(id,ST_CLX)+194,status(id,ST_CLY)+15)

 

この時点のtest.uwsの内容

doscmd("timedate.cpl",TRUE)

id=getid("日付と時刻のプロパティ","#32770")

btn(LEFT,CLICK,status(id,ST_CLX)+194,status(id,ST_CLY)+15)

15. これを保存し、[日付と時刻]の窓を閉じて、test.uws を起動する。

[日付と時刻のプロパティ]の窓が開き、[インターネット時刻]が選ばれる。

      [インターネット時刻]が選ばれない場合は、btn()関数の座標が正しく取得されていないことが原因。前の手順 (btn()関数によるクリック動作部の作成)に戻ってやり直す。

      意図した結果にはなるが、[インターネット時刻]の選択動作が本当に行われているかが肉眼で確認できなければ、途中にsleep()関数を入れてみる。

 

test.uwsを書き換えた後の内容

doscmd("timedate.cpl",TRUE)

id=getid("日付と時刻のプロパティ","#32770")

sleep(1)

btn(LEFT,CLICK,status(id,ST_CLX)+194,status(id,ST_CLY)+15)

16. これを保存し、[日付と時刻]の窓を閉じて、test.uws を起動する。

[日付と時刻のプロパティ]の窓が開き、少し停止した後、[インターネット時刻]が選ばれる。

 

【後書き】

btn()関数は、戻り値で結果が確認できないので、動作の正確性で難がある。あくまでも、clkitem()やショートカットキーなどが通用しない場合に、最終手段として私は使っている。

本稿では、btn()関数の相対座標指定を取り上げたが、UWSCの現行版では mouseorg()関数で同様の操作ができる。私がUWSCでbtn()関数に取り組んだときは、mouseorg ()関数が無かった。どちらが便利かは知らないが、本稿の方法で用が足りているので、mouseorg()関数は使っていない。

btn()の多用が必要なアプリケーションを操作する人は、ぜひmouseorg()関数も習得することをお勧めする。

 

以上

 

© 2006 眠たい詩人