アイテムをクリックする
戻値 = CLKITEM(ウィンドウのID, アイテム名, [種別, On/Off, 番号] )
ウィンドウのID:Windowを識別するID
(例:GETID関数で取得できる値)
アイテム名:ボタン、チェックボックス、ラジオボタンのキャプションの文字、
リストボックス、コンボボックスの選択名、タブ名、
メニュー項目名、ツリービュー項目、リストビュー項目、
ツールバー上のボタン名
(のいずれか)
(例:CLK_LIST or CLK_SHORT)
(CLK_MOUSEMOVE でも可)
CLK_ACC 指定時にアイテムを後ろからサーチ
CLK_ACC 指定時に前回の実行地点からサーチ
True=On(デフォルト)、False=Off
番号: 同名のアイテム名がある場合の
オブジェクト順番
(左上から数えたオブジェクト順番[1から指定])
戻値
TRUE:正常
FALSE:処理不能
補足
アイテム名の最後に付く ニーモニック(&A)、(&B)は不要
種別:省略時は下記順でサーチ
BTN->LIST->TAB->MENU->TREEVEW->LSTVEW->TOOLBAR
メニュー、ツリービュー: \ にてパス指定表記可
リストボックス: 複数選択の場合はタブでアイテム名を繋げる
CLKITEMは、指定したウィンドウのボタンやアイテムをクリックします。
パラメーターと種別が多いので難しく見えますが、
以下のサンプルでシンプルな動きを参考にして下さい。
電卓を操作する
電卓を起動し、
各ボタンを押下します。
最後のCLKITEMではCLK_BTNを置いていますが、
無くても動きます。3つ目の引数は任意の項目です。
GID = EXEC("calc") CLKITEM(GID,"1") CLKITEM(GID,"0") CLKITEM(GID,"2") CLKITEM(GID,"+") CLKITEM(GID,"2") CLKITEM(GID,"0") CLKITEM(GID,"1") CLKITEM(GID,"=") MSGBOX("答えは303です。リセットします。") //CLK_BTNはオマケ。無くてもボタンは押下されます CLKITEM(GID,"C",CLK_BTN)
タグ
2012年6月28日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
ショートカットキーを送る
SCKEY(ウィンドウのID,キー[, キー, キー・・・・・])
SCKEYはショートカットキーを指定したウィンドウに送信します
キーを送るウィンドウを指定するため、
事前にウィンドウのIDを取得しておく必要があります。
Ctrl + S(保存)のショートカットキーをメモ帳に送る
ID = EXEC("notepad") SCKEY(ID,VK_CTRL, VK_S)
解説
非常にシンプルなスクリプトですが、
ショートカットキーを送るエッセンスが詰まっています。
まずはSCKEY関数を見てみましょう。
VK_CTRL、VK_Sはそれぞれ
キーボードのCtrlキー、Sキーを意味している仮想キーです。
新規に立ち上げたメモ帳でCtrl + Sを実行すると保存ウィンドウが開きます。
ウィンドウのIDを取得し、仮想キーをSCKEYで送る。
この関数を使う上で理解しておくたった1つの大事なポイントです。
メモ帳と電卓の両方をショートカットキーで操作する
応用編です。
といっても基本のポイントを複数回かさねただけです。
電卓を立ち上げ、数字を送り計算させます。
その後で計算結果をクリップボードにコピーし、
メモ帳に貼り付けます。
スクリプトは以下の通りです。
タグ
2012年5月30日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
指定したディレクトリのファイル名を取得する
戻値 =GETDIR( ディレクトリ, [ファイル指定, 不可視ファイルフラグ, 取得順番] )
“\” を指定するとディレクトリ名の取得
- 0:ファイル名順(デフォルト)
- 1:サイズ順
- 2:作成日
- 3:更新日
- 4:アクセス日
使い方
GETDIR サンプルスクリプトに関しては、リンクよりご確認ください。
GETDIRはプログラムを組む際に予測のつかないファイルが特定のディレクトリに投げ込まれるような場合に役立ちます。
例えば、WEBサイトをクロールして画像ファイルを取得してくるプログラムを組んだ場合、取得してきたデータをリスト化するといったことが考えられます。
その他では、戻値でファイル数を取得できることを利用して、一定数のログファイルが溜まったら古いものから削除するプログラムのファイル数の判定に使うことができます。
タグ
2012年5月26日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
ファイル書き込み
FPUT( ファイルID, 書込み値, [行, 列] )
・ ファイルID・・・FOPENで取得したファイルID
・書込み値・・・ファイルに書き込む値
・行・・・書込み行(1から指定)、0で行末に追加。
F_INSERTを指定した場合は指定行に挿入
ファイルに値を書き込む
ファイルを開き、値を書き込む。
こういった処理はよくありますが、FOPENでのファイルオープンや、
FCLOSEによるファイルクローズと言った手続きを忘れてしまいがちです。
下記はファイルに値を書き込むシンプルなスクリプトの例です。
//C:\temp.txtに日付を記入したファイルを作成 FNAME = "C:\temp.txt" DOSCMD("echo %DATE% %TIME% > " + FNAME) //ファイルをオープン ID = FOPEN(FNAME,F_READ or F_WRITE) //ミリセカンドまで含めた時間を10回書き込む FOR A = 1 TO 10 GETTIME() NOW = G_TIME_YY + "/" + G_TIME_MM + "/" + G_TIME_DD + " " + G_TIME_HH + ":" + G_TIME_NN + ":" + G_TIME_SS + "." + G_TIME_ZZ FPUT(ID,NOW) NEXT //最後にファイルクローズ FCLOSE(ID) //中身を確認した後、ファイル自体は削除 DOSCMD("notepad " + FNAME) DOSCMD("del " + FNAME)
CSVファイルの指定位置に値を書き込む
次にFPUT関数の様々な引数を利用し
CSVファイルの指定位置に情報を書き込んで見ます。
サンプルでは3行のカンマ区切りのファイルの中で、
3行目の4つ目の値を対象にしています。
スクリプトは下記のようになります。
タグ
2012年5月24日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
COMコンポーネントの開いているウィンドウを制御する(GETACTIVEOLEOBJ)
GETACTIVEOLEOBJ(“InternetExplorer”,ウィンドウタイトル)
GETACTIVEOLEOBJ関数は、
既に開いているウィンドウを制御する場合に使います。
「ウィンドウタイトル」は制御したい対象のウィンドウタイトルを記述しますが、
一部でも構いません。 ※一部アプリでは無効
アクティブにしたウィンドウのタイトルタグを取得するサンプル
IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("http://www.google.co.jp/") BusyWait(IE) IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("http://www.yahoo.co.jp/") BusyWait(IE) FOR KAISU = 1 TO 5 IE = GETACTIVEOLEOBJ("InternetExplorer.Application","Google") SLEEP(1) PRINT IEGetSrc(IE, "TITLE") IE = GETACTIVEOLEOBJ("InternetExplorer.Application","yahoo") SLEEP(1) PRINT IEGetSrc(IE, "TITLE") NEXT Procedure BusyWait(ie) Sleep(0.5) // Wait Const TIME_OUT = 90 tm = Gettime() repeat Sleep(0.2) ifb Gettime() - tm > TIME_OUT MsgBox("Time Out:BusyWait") ExitExit endif until (! ie.busy) and (ie.readyState=4) Sleep(0.5) Fend
解説
このプログラムを動かすと、
GETACTIVEOLEOBJが働いていることが確認できます。
タグ
2012年5月19日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
文字列の取得
戻値 = GETSTR(ID,[番号,種別,マウス移動])
(ID = 0 であれば クリップボードから)
(0:デフォルトはフォーカスを持ったコントロール)
(ステータスバー指定時はパーツ)
STR_STATIC (1) // スタティクコントロール
STR_STATUS (2) // ステータスバー
STR_ACC_EDIT (3) // ACC用インターフェース経由でのエディト内文字
STR_ACC_STATIC (4) // ACC用インターフェース経由でのスタティク文字
TRUE: マウスをその場所に移動させる
- 戻値
- 取得した文字列
メモ帳を起動して、『TEST』という文字列を送り、メモ帳に書かれた文字列を取得する
GID = EXEC("notepad") SENDSTR(GID,"TEST") MSGBOX("メモ帳に表示された文字列を取得します") STR = GETSTR(GID,1,STR_EDIT) MSGBOX(STR)
かなりマッチポンプなサンプルで恐縮ですが、
このように使えます。
私自身は、
クリップボード(0)の文字列
を取得する際に利用することが多いです。
タグ
2012年5月11日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
文字型を数値に変える
- 引数
- 文字列: 数値に変える文字列
- エラー値: 数値に変換できない場合に返す値
- 戻値
- 数値
- 数値変換できない場合はエラー値を、デフォルトでは ERR_VALUE (-999999)を返す
PRINT VAL(INPUT("数値化したい文字列を入力してください","10,000"))
このサンプルの結果は、プリントウィンドウに『10000』が表示されます。
エラー値を設定して、条件分岐に利用するサンプル
DIM STR[2] STR[0] = "TEST" STR[1] = "10,000" STR[2] = "0.15mm" cnt = 0 WHILE cnt < 3 HANBETU = VAL(STR[cnt],"ERROR") PRINT STR[cnt] IFB HANBETU <> "ERROR" DOUBLES = HANBETU * 2 PRINT "DOUBLES:" + DOUBLES ENDIF cnt = cnt + 1 WEND
数値に変換できるものだけを倍にするという条件になっています。
このサンプルの実用性はちょっと考えにくいですが、
例えば、計算機的なアプリを作る時には、
数値変換による条件分岐は役に立ちそうですね。
タグ
2012年5月9日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
マウスカーソルの状態を取得する
MUSCURはマウスカーソルの状態を判別して、
下記表のように戻り値を返します。
引数は必要ありませんが、関数なので()は毎回必要です。
戻り値 | 状態 |
---|---|
CUR_APPSTARTING (または、1) | ![]() |
CUR_ARROW (または、2) | ![]() |
CUR_CROSS (または、3) | ![]() |
CUR_HAND (または、4) | ![]() |
CUR_HELP (または、5) | ![]() |
CUR_IBEAM (または、6) | ![]() |
CUR_NO (または、8) | ![]() |
CUR_SIZEALL (または、10) | ![]() |
CUR_SIZENESW (または、11) | ![]() |
CUR_SIZENS (または、12) | ![]() |
CUR_SIZENWSE (または、13) | ![]() |
CUR_SIZEWE (または、14) | ![]() |
CUR_UPARROW (または、15) | ![]() |
CUR_WAIT (または、16) | ![]() |
※ ユーザー定義カーソルはハンドル値をマイナスにして返す(起動毎に変化)
タグ
2012年5月5日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
文字列の送信
メモ帳やInternet Explorerのフォーム入力はKBD関数などで、
いちいちスクリプトを組んでいてはキリがありません。
そこでUWSCでは、指定文字列を一発で入力できるSENDSTRを利用します。
SENDSTR( ウィンドウID, 文字列, [番号, 送信モードフラグ, ACC指定] )
(ID = 0 であれば クリップボードへ)
(0:デフォルトはフォーカスを持ったエディトコントロール)
TRUE: 置き換え
TRUE: アクセシビリティ用インターフェースを利用
SENDSTRは関数名の通り、
STR(STRING:文字列)をSEND(送る)関数
です。
ACC(アクセシビリティ用インターフェース)は障害者向けの支援技術で
スクリーン・リーダー等に使われたりします。
メモ帳を操作するサンプル ※メモ帳を起動して試してみてください
// メモ帳の操作 memoid =GETID("メモ帳") ifb memoid <0 then MsgBox("メモ帳を起動してご利用ください") Exit endif // 置換の実行 SendStr(memoid, "リターンの実行<#CR>", 1, True) // リターン =<#CR> SLEEP(3) SendStr(memoid, "タブの実行<#TAB>") // タブ =<#TAB> SLEEP(3) SendStr(memoid, "あああ") SLEEP(3) ClkItem(memoid, "置換", CLK_MENU) SLEEP(3) repid =GETID("置換") SendStr(repid, "あああ", 1, True) // 検索 SLEEP(3) SendStr(repid, "いいい", 2, True) // 置換 SLEEP(3) ClkItem(repid, "すべて置換") SLEEP(3) ClkItem(repid, "キャンセル")
解説
実はこのサンプルは、UWSCのHELPにあるスクリプトほぼそのままで、
動作を確認するためのSLEEPを組み込んだスクリプトです。
非常に示唆に富むスクリプトなので利用させてもらっています。
まず、置換の実行1行目に注目しましょう。
送信モードフラグをTRUEを指定しているので、
メモ帳は置き換えになります。
例えば、このスクリプトを起動する前にメモ帳に適当な単語を書いていても、
『リターンの実行』で上書きされることになります。
また、”<#CR>“によって改行されるのが見てとれます。
さらに、”あああ”が、タブの実行によって1回タブを押した分のスペース分後ろに追加されるのが分ります。
そして、ClkItemでメニューの置換を押下します。
SendStrから少し外れますが、
CLK_MENUを利用する分りやすい実例となっているので、
是非覚えておきたい1文です。
次の段階として、置換のコントロールを行っています。
先ほど、メニューの置換を立ち上げたので、
最初にウィンドウIDをGETIDで取得しています。
そして、エディトコントロールを1番に指定したうえで、
置き換えのTRUEを指定しています。
これにより、前回の置換で利用した文字列に追加しないで、
上書きでBOXに入力が可能になります。
同様に置換する文字列を入力して、置換の実行、置換ウィンドウを閉じる、といった動作になります。
このようにSENDSTRで文字列を送ることが可能になります。
タグ
2012年5月3日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数
指定回数を繰り返す(FOR)
処理
NEXT // NEXTの後に変数を書いてはダメ
「変数」が「初期値」から「終了値」の条件を満たす限り、
繰り返し処理を行います。
1回実行するたびに「刻み値」分だけ「変数」の値は増加していきます。
※刻み値を省略した場合は、変数は1づつ増加します。
FOR~NEXTはかなり使用頻度の高い制御文です。
「UWSC大好き」と100回表示するサンプル
FOR KAISU = 1 TO 100 PRINT "UWSC大好き" NEXT
「変数」であるKAISUを処理で使用することも可能です。
KAISUの増加を確認するサンプル
FOR KAISU = 1 TO 100 PRINT KAISU NEXT
STEPの増加を確認するサンプル
タグ
2012年4月16日 | コメントは受け付けていません。 |
カテゴリー:逆引き関数