アイテムをクリックする

アイテムをクリックする
戻値 = CLKITEM(ウィンドウのID, アイテム名, [種別, On/Off, 番号] )

引数
ウィンドウのID:Windowを識別するID
         (例:GETID関数で取得できる値)

アイテム名:ボタン、チェックボックス、ラジオボタンのキャプションの文字、
      リストボックス、コンボボックスの選択名、タブ名、
      メニュー項目名、ツリービュー項目、リストビュー項目、
      ツールバー上のボタン名
      (のいずれか)
種別
CLK_BTN
ボタン、チェックボックス、ラジオボタン
CLK_LIST
リストボックス、コンボボックス
CLK_TAB
タブコントロール
CLK_MENU
メニュー
CLK_TREEVEW(CLK_TREEVEW)
ツリービュー
CLK_LSTVEW(CLK_LISTVIEW)
リストビュー
CLK_TOOLBAR
ツールバー
CLK_ACC
アクセシビリティ用インターフェース経由によるクリック
CLK_SHORT
文字省略指定: 部分一致にて検索
(例:CLK_LIST or CLK_SHORT)
CLK_BACK
バックグランド実行: ウィンドウをアクティブ化しません
CLK_MUSMOVE
マウス移動: マウスをその場所に移動します
(CLK_MOUSEMOVE でも可)
CLK_RIGHTCLK
右クリック動作
CLK_LEFTCLK
左クリック動作
CLK_DBLCLK
ダブルクリック
CLK_FROMLAST
後ろからサーチ
CLK_ACC 指定時にアイテムを後ろからサーチ
CLK_CONTINUE
前回地点からサーチ
CLK_ACC 指定時に前回の実行地点からサーチ
On/Off:チェックボックス、メニューでのチェック、クリック動作
     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( ディレクトリ, [ファイル指定, 不可視ファイルフラグ, 取得順番] )
引数
ディレクトリ
ファイル名の取得のディレクトリ
ファイル指定
ワイルドカード(*, ?) によるファイル名指定
“\” を指定するとディレクトリ名の取得
不可視ファイルフラグ
TRUE:不可視ファイルも含める、 FALSE:含めない(デフォルト)
取得順番
ファイルの並びを指定する
  • 0:ファイル名順(デフォルト)
  • 1:サイズ順
  • 2:作成日
  • 3:更新日
  • 4:アクセス日
戻値
ゲットした数を返す
取得した情報は配列変数の GETDIR_FILES[ ] に格納される (配列はゼロから)

使い方

GETDIR サンプルスクリプトに関しては、リンクよりご確認ください。
GETDIRはプログラムを組む際に予測のつかないファイルが特定のディレクトリに投げ込まれるような場合に役立ちます。

例えば、WEBサイトをクロールして画像ファイルを取得してくるプログラムを組んだ場合、取得してきたデータをリスト化するといったことが考えられます。

その他では、戻値でファイル数を取得できることを利用して、一定数のログファイルが溜まったら古いものから削除するプログラムのファイル数の判定に使うことができます。

タグ

2012年5月26日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

ファイル書き込み

ファイル書き込み
FPUT( ファイルID, 書込み値, [行, 列] )

引数
・ ファイルID・・・FOPENで取得したファイルID
・書込み値・・・ファイルに書き込む値
・行・・・書込み行(1から指定)、0で行末に追加。
F_ALLTEXTを指定した場合は行ではなくファイルの全内容として書き込む
・列・・・書込み列(1から指定)
カンマ区切りのCSVファイルに対応
F_INSERTを指定した場合は指定行に挿入
※書き込み内容の反映はFCLOSEの実行時

ファイルに値を書き込む

ファイルを開き、値を書き込む
こういった処理はよくありますが、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
Windowを識別するID
(ID = 0 であれば クリップボードから)
番号
左上から数えたコントロールの順番 (1から指定、マイナスを付けた場合にはDisable状態のものもカウント)
(0:デフォルトはフォーカスを持ったコントロール)
(ステータスバー指定時はパーツ)
種別
STR_EDIT (0)    // エディトコントロール(デフォルト)
STR_STATIC (1)   // スタティクコントロール
STR_STATUS (2)   // ステータスバー
STR_ACC_EDIT (3)  // ACC用インターフェース経由でのエディト内文字
STR_ACC_STATIC (4) // ACC用インターフェース経由でのスタティク文字
マウス移動
FALSE: マウス移動なし(デフォルト)
TRUE: マウスをその場所に移動させる

戻値
取得した文字列

メモ帳を起動して、『TEST』という文字列を送り、メモ帳に書かれた文字列を取得する

GID = EXEC("notepad")
SENDSTR(GID,"TEST")
MSGBOX("メモ帳に表示された文字列を取得します")
STR = GETSTR(GID,1,STR_EDIT)
MSGBOX(STR)

なりマッチポンプなサンプルで恐縮ですが、
このように使えます。

私自身は、
クリップボード(0)の文字列
を取得する際に利用することが多いです。

タグ

2012年5月11日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

文字型を数値に変える

戻値 = VAL( 文字列, [エラー値] )

引数
文字列: 数値に変える文字列
エラー値: 数値に変換できない場合に返す値
戻値
数値
数値変換できない場合はエラー値を、デフォルトでは 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)ハンドカーソル ハンドカーソル(Windows2000以降)
CUR_HELP (または、5)クエスチョンマーク付き矢印カーソル クエスチョンマーク付き矢印カーソル
CUR_IBEAM (または、6)テキスト選択カーソル テキスト選択カーソル
CUR_NO (または、8)禁止カーソル 禁止カーソル
CUR_SIZEALL (または、10)4方向矢印カーソル 4方向矢印カーソル
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:
Windowを識別するID
(ID = 0 であれば クリップボードへ)
文字列:
送りたい文字列
番号:
左上から数えたエディトコントロールの順番 (1から指定、マイナスを付けた場合にはDisable状態のものもカウント)
(0:デフォルトはフォーカスを持ったエディトコントロール)
送信モードフラグ:
FALSE: 追加 (デフォルト)
TRUE: 置き換え
ACC指定:
FALSE: APIによる (デフォルト)
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)

FOR 変数 = 初期値 TO 終了値 [STEP 刻み値]
 

処理

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日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

このページの先頭へ