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

ひらがなや漢字を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

ファイルのコピーができない

UWSCビギナーです。
次のやり方では何故かコピーできませんでした。

mmv(x,_y)
KBD(VK_CTRL,DOWN)
KBD(VK_C,CLICK,100)
KBD(VK_CTRL,UP)

どうしたらイイでしょうか?

UWSC初心者の方は、マクロ記録から始めることかと思います。
ということで、マクロ記録した時に最も多く表示されるMMVのおさらいから始めましょう。

MMV( x, y, [ms] )
マウス移動を指定

引数
x, y: 位置
ms: 実行までの待ち時間 (ミリセカンド)

この関数は、マウスの移動を指定することに限られ、
ファイルの選択は命令に含みません。

なので、
質問にあるように、ファイルをコピーしたい場合は、
対象のファイルがある位置へMMVで移動した後に、
BTN(LEFT,DOWN,[x, y, ms])
の命令を追加する必要があります。

ということで、
下記のようなスクリプトでファイルのコピーは可能になるかと思います。

BTN(LEFT,DOWN,[x, y, ms])
KBD(VK_CTRL,DOWN)
KBD(VK_C,CLICK,100)
KBD(VK_CTRL,UP)

また、ファイルのコピーを確実に制御したい場合は、
http://canal22.org/qanda/doscmdmove/ を参考に、
DOSCMDを利用してみてください。

タグ

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

カテゴリー:Q&A

画像リンクをクリックしたい!

画像リンクのクリックでハマりました。解決方法はありませんか?
ちなみにボタンのクリックはできています。
せっかくイイ感じでスクリプトを生成していても、
画像リンクのクリック部分だけ、対話式にしないといけなくて、
結局自動化できない。。。なんてことありますね。

かくいう私もその1人でした。
しかし、COMコンポーネントの利用で以下のように、
解決します。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.Visible = TRUE
IE.navigate("http://canal22.org/sample0006/")
REPEAT
    SLEEP(0.1)
UNTIL (!IE.Busy) AND (IE.ReadyState = 4)

// 画像一覧を取得
IMG_LST = IE.Document.Images

// 画像一覧の中からalt属性が一致する画像をクリックする
FOR I = 0 TO IMG_LST.length - 1
    IMG_ALT = "2012年9月1日(土)UWSCセミナー勉強会@東京 のお知らせ"

    // 画像一覧からalt属性でヒットする
    IFB IMG_LST.Item(I).Alt = IMG_ALT THEN
        // 次ページに遷移する。
        MSGBOX("ページ遷移します。")
        IMG_LST.Item(I).Click()
    ENDIF
NEXT

解説

ヘルプなどに出ていないので、IMG_ALTIE.Document.Imagesといった部分に面食らったかもしれません。

これはCOM(IE)コンポーネントという機能を利用していて、
UWSCからCOMを利用できるが、COMがUWSCの機能ではないので、
ヘルプなどには、ほとんど載りません。

しかし、UWSC コバヤシ式では、UWSC 上級ページにて、
こういったCOMコンポーネントの利用方法を解説しているので、
よろしければ、ご参照ください。

今回のサンプルはconfrageさんのサイトを参考にさせてもらいました。

参考ページ
http://www.confrage.com/uwsc/ie/imglink/imglink.html

タグ

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

カテゴリー:Q&A

ショートカットキーを送る

ショートカットキーを送る
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日 | コメントは受け付けていません。 |

カテゴリー:逆引き関数

文字列の送信

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

カテゴリー:逆引き関数

KBD

KBD関数

キーボードを操作する
KBD(仮想KEY [,状態 ,ms] )

引数

仮想KEY・・・送信する仮想KEYコード
状態(数字でも表記可)・・・CLICK(0:デフォルト), DOWN(1), UP(2)
ms・・・待ち時間(ミリ秒)


キーボードを押下する

試しにWindowsキーを押してみます。

KBD(VK_WIN)

メモ帳に”Hello”と打ち込む

それではメモ帳を立ち上げ、KBD関数を利用して”Hello”という文字列を打ち込みましょう。
この操作はSCKEY関数などを使えばより簡潔に表現できますが、
ここでは敢えてKBD関数で実現してみます。
ポイントはメモ帳を立ち上げ、操作可能な状態に事前にしておくところです。
スクリプトは以下のようになります。

この投稿の続きを読む »

タグ

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

カテゴリー:関数一覧

このページの先頭へ