ひらがなや漢字を入力したい

ひらがなや漢字をUWSCで入力することはできますか。仮想キーを使って「VK_あ」のような表現はできませんか?
SENDSTRで直接ひらがなや漢字を送る方法、仮想キーで事前に「漢字」、「かな」モードを指定する方法があります

SENDSTR(ID,文字列)
指定ウィンドウに文字列を送信

この関数の文字列に丸々ひらがなや漢字を指定してしまえば、対象のウィンドウに送信可能です。

//メモ帳を起動
ID = EXEC("notepad")
SENDSTR(ID,"全角の文字、漢字が送れます")

どうでしょうか。メモ帳が立ち上がり文字列が送信できました。
しかし、この方法ではなく、あえてKBD関数によるキーボード(仮想キー)による操作を行いたい場合、
VK_KANAやVK_KANJIを含めたスクリプトを作ることも考えられます。
用途としては、変換候補を全てメモ帳に出力してみたい(「かぜ」だったら「風邪」「風「カゼ」・・・などのように)、
あるいはローマ字配列ではなく、日本語配列のキーボードで作業したい(H=く、J=ま、K=の、L=り)、
のようなケースが考えられますでしょうか。
スクリプトは以下のようになります。

ID = EXEC("notepad")
CTRLWIN(ID, ACTIVATE)
//漢字モードにして、「かい」の変換候補を10回出す
KBD(VK_KANJI)
STREAM = 0
FOR ST = 1 TO 10
  KBD(VK_K)
  KBD(VK_A)
  KBD(VK_I)
    LAST = 0
    WHILE LAST < STREAM
        KBD(VK_CONVERT)
        LAST = LAST + 1
    WEND
  KBD(VK_RETURN)
  KBD(VK_RETURN)
  STREAM = STREAM + 1
NEXT
KBD(VK_RETURN)
KBD(VK_KANJI)
//かなモードにして、「くまといぬ」と入力する
KBD(VK_KANA)
KBD(VK_H)
KBD(VK_J)
KBD(VK_S)
KBD(VK_E)
KBD(VK_1)
KBD(VK_RETURN)
KBD(VK_KANA)

タグ

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

カテゴリー:Q&A

script0005


script0005
メモ帳を操作するサンプル
参考:http://canal22.org/gyaku/sendstr-2/

ダウンロードする

タグ

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

カテゴリー:ツール

文字列の送信

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

カテゴリー:逆引き関数

SENDSTR

SENDSTR関数

指定したウィンドウに文字列を送信する
SENDSTR( ID, 文字列, [番号, 送信モードフラグ, ACC指定] )

引数

 ウィンドウのID: Windowを識別するID
0を指定するとクリップボードへ送られる
 文字列:送りたい文字列
 番号:左上から数えたエディトコントロールの順番
    指定は1から
    マイナスを付けた場合はDisable状態のものもカウント
    0(デフォルト)はフォーカスを持ったエディトコントロール
 送信モードフラグ: 
    FALSE: 追加 (デフォルト)
    TRUE: 置き換え
 ACC指定:
    FALSE:APIによる(デフォルト)
    TRUE:アクセシビリティ用インターフェースを利用

指定したウィンドウに文字列を送信します。

メモ帳に文字列を送信する

メモ帳を起動し、
「明日は晴れ」という文字列をメモ帳に送り、
その後でクリップボードにも同様の文字列を送ります。

GID = EXEC("notepad")
SENDSTR(GID, "明日は晴れ")
MSGBOX("クリップボードにも同じ文章を送信します")
SENDSTR(0, "明日は晴れ")
MSGBOX("Ctrl + v で文章がクリップボードにある事を確認して下さい")

タグ

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

カテゴリー:関数一覧

任意の文字列をメモ帳に書き出したい

任意の文字列をメモ帳に書き出したい
メールの送信文であったり、HTMLのテンプレートであったり
任意の文字列を取り扱うことはよくあると思います。

色々なテンプレート文をファイルに保存していると、間違って上書きしたりと
管理が煩雑です。
あらかじめ決めた文章を、その場でメモ帳にパパッと
書き出せるといいのに。
そんな問題をUWSCで解決してみましょう。


SENDSTR(EXEC("NOTEPAD"),"こんにちは!")

一番簡単な解決方法です。
EXEC関数でメモ帳を起動し、SENDSTR関数で文字を送っています。

しかし、これだと、スクリプトを変えない限りは
いつも同じ文言しか送れないという問題があります。
例えばメール文章のテンプレートで、
作成の度に違う名前を差し込みたい場合はこういうスクリプトはどうでしょうか。

この投稿の続きを読む »

タグ

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

カテゴリー:Q&A

ランダムな文字列をメモ帳に書き出したい

ランダムな文字列をメモ帳に書き出したい
IDやパスワードなどを生成する際に、
意味を持たないランダムな組み合わせの文字列にしたい事があります。

テストデータを作ったり、全く想定できないパスワードを作る際に利用します。
一つ、二つ程度ならばガチャガチャとキーボードを叩けば作れますが
何十個も作るとなると、ちょっと大変ですね。
そんな問題をUWSCで解決してみましょう。


8文字のランダムな文字列10個をメモ帳に書き出してみます。

IDPASS = ""
//文字列10個出力
FOR A = 1 TO 10
    //文字数は8文字
    FOR B = 1 TO 8
       IDPASS = IDPASS + RETURNCHAR()
    NEXT
    IDPASS = IDPASS + "<#CR>"
NEXT
SENDSTR(EXEC("NOTEPAD"),IDPASS)

FUNCTION RETURNCHAR()
SELECT RANDOM(26)
CASE 0
RESULT = "a"
CASE 1
RESULT = "b"
CASE 2
RESULT = "c"
CASE 3
RESULT = "d"
CASE 4
RESULT = "e"
CASE 5
RESULT = "f"
CASE 6
RESULT = "g"
CASE 7
RESULT = "h"
CASE 8
RESULT = "i"
CASE 9
RESULT = "j"
CASE 10
RESULT = "k"
CASE 11
RESULT = "l"
CASE 12
RESULT = "m"
CASE 13
RESULT = "n"
CASE 14
RESULT = "o"
CASE 15
RESULT = "p"
CASE 16
RESULT = "q"
CASE 17
RESULT = "r"
CASE 18
RESULT = "s"
CASE 19
RESULT = "t"
CASE 20
RESULT = "u"
CASE 21
RESULT = "v"
CASE 22
RESULT = "w"
CASE 23
RESULT = "x"
CASE 24
RESULT = "y"
CASE 25
RESULT = "z"
default
RESULT = "a"
SELEND
FEND

UWSCのRANDOM関数(0~指定数字未満のどれかを返す)を使って
ランダムな数値を取り出し、その数値をアルファベットに変換します。
それを8文字×10個繰り返すという、
非常にわかりやすいスクリプトです。


これだとちょっと冗長だと思う方はもう少し短くしてみましょう。


文字にはすべてASCIIコードという値が割り当てられています。
そしてUWSCには文字とASCIIコードを変換する関数があります。

UWSCでは「a」のASCIIコード97は、「z」のACIIコードは122となっています。
このACIIコード表を見ればわかるように「a」から「z」まで順番に97から122と数値が割り当てられていますので
この仕組みを利用しましょう。

IDPASS = ""
//文字列10個出力
FOR A = 1 TO 10
    //文字数は8文字
    FOR B = 1 TO 8
       IDPASS = IDPASS + RETURNCHAR()
    NEXT
    IDPASS = IDPASS + "<#CR>"
NEXT
SENDSTR(EXEC("NOTEPAD"),IDPASS)

FUNCTION RETURNCHAR()
RESULT = CHR(97 + RANDOM(26))
FEND

だいぶスッキリしました。

では、もう少し要件が細かくなった場合はどうしましょうか。
例えば、下記に対応するのはどうでしょう。
(1)アルファベットの大文字も利用したい
(2)数字も利用したい
(3)5文字のIDと10文字パスワードをセットで10個出したい
(4)IDの先頭文字に数字は使いたくない

複雑そうに見えますが、1つ1つ組み立てていきましょう。

この投稿の続きを読む »

タグ

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

カテゴリー:Q&A

このページの先頭へ