文字列の取得

文字列の取得
戻値 = 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日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

文字列の送信

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

カテゴリー:逆引き関数

文字列のコピー

文字列の一部をコピーする関数です

COPY(文字列,開始位置,コピーする文字数)

文字列
対象となる文字列
開始位置
コピーの開始位置を先頭からの文字数で指定
コピーする文字数
何文字目までコピーするかを指定

れによって、文字列の任意の部分を取得できます。
※ バイト処理の場合は COPYB です。
また、POS関数LENGTH関数と連動させて、利用されることが多いです。
EXCEL関数を多用される方には、利用シーンが沢山見つかるでしょう。

名前だけを取得するサンプル
//常に姓と名の間にスペースがある前提
mojiretu = "山田 まりお"
STR = COPY(mojiretu,POS(" ",mojiretu)+1,LENGTH(mojiretu))
PRINT STR

タグ

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

カテゴリー:逆引き関数

GETSTR

GETSTR関数

指定したウィンドウ(もしくはクリップボード)にある文字列を取得する
戻値 = GETSTR( ウィンドウのID, [番号, 種別, マウス移動] )

引数

 ウィンドウのID: Windowを識別するID
0を指定するとクリップボードの文字列を取得
 番号:左上から数えたコントロールの順番
     指定は1から
     マイナスを付けた場合はDisable状態のものもカウント
     0(デフォルト)はフォーカスを持ったエディトコントロール
 種別: 
 下記の文字列を指定、もしくは()内の数字を指定
     STR_EDIT (0)・・・エディットコントロール(デフォルト)
     STR_STATIC (1)・・・スタティックコントロール
     STR_STATUS (2)・・・ステータスバー
     STR_ACC_EDIT (3)・・・アクセシビリティ用インターフェース経由でのエディット内文字
     STR_ACC_STATIC (4)・・・アクセシビリティ用インターフェース経由でのスタティック文字
 マウス移動:
    FALSE:移動なし
    TRUE:取得文字列の場所に移動

電卓を起動し、ボタンの表示文字列を取得します。

電卓を起動し、
ボタン(ここでは「MR」)の文字列を取得します。

GID = EXEC("calc")
SENDSTR(GID,256)
MSGBOX("電卓に表示された文字列を取得します")
STR = GETSTR(GID,4,STR_STATIC)
MSGBOX(STR)
MSGBOX("クリップボードに「555」という文字列を送信します")
SENDSTR(0,"555")
MSGBOX("クリップボードの文字列を取得します")
STR = GETSTR(0)
MSGBOX(STR)

タグ

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

カテゴリー:関数一覧

このページの先頭へ