ここから本文です

uwscについてです。 代入した文章をkbd文で入力するにはどうすればいいのでしょう...

kim********さん

2013/3/2918:54:28

uwscについてです。
代入した文章をkbd文で入力するにはどうすればいいのでしょう?
fj="あいうえお"
kbd(VK_○)

説明下手ですみません。

補足回答ありがとうございます。分かりやすく理解できました!
ですがjun_saeda様のやり方だと長くなりすぎて私のしたいことが出来ません。
私は
whileで1回目は1、2回目は2、3回目は3....と入力したいのです。
先に説明しておくべきでした。

閲覧数:
2,808
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

jun********さん

編集あり2013/3/2920:33:28

KBD関数の仮想キーは、あくまでもキーボードにあるキーしか定義されていません。従って、普通に日本語入力する動作をスクリプトで組む必要があります。
例えば、日本語入力モードになっていない状態から「か」を入力してみます。
KBD(VK_KANJI, CLICK)
KBD(VK_K, CLICK)
KBD(VK_A, CLICK)

このように、個別に考えるならば、比較的簡単にできます。しかし、文字列から判断して50音をカバーするとなると、結構面倒です。
あ → VK_Aを入力
か → VK_K、VK_Aを入力
さ → VK_S、VK_Aを入力

といった具合に、変換処理を組む必要があります。その上で、文字列を右から1文字ずつ読み出して、変換処理部に送る、といったスクリプトを組む必要があります。
どのように組むかは、プログラミングスタイルによりますので、これ、ということはできません。例えば、こんな形にもできます。

tmp="あ"
mojiChange(tmp)
tmp="い"
mojiChange(tmp)

PROCEDURE mojiChange(moji)
KBD(VK_KANJI, CLICK)
IF (moji="あ") THEN
KBD(VK_A, CLICK)
ENDIF
IF (moji="い") THEN
KBD(VK_I, CLICK)
ENDIF
KBD(VK_RETURN, CLICK)
KBD(VK_KANJI, CLICK)
FEND

PROCEDURE~FENDの部分で変換処理を関数定義し、最初の行の方で呼び出しています。ただし、これは力技ですので、コードが非常に長くなります(50音ありますから)。
ASC関数で文字のUNICODE番号を得ることができますので、UNICODEの規則を利用すれば、もう少し簡素になるかもしれません。
いずれにしても、慣れていないと、少し面倒です。

(追記)
分かり易さを優先させたのですが、確かに非常に長くなります。

ただ、半角の数字を入力するのであれば、次のようにすることも可能です。
0を入力 → KBD(48, CLICK)
9を入力 → KBD(57, CLICK)

このように、半角文字については、UNICODE番号を仮想キーの代わりに用いることができます。また、半角のUNICODE番号は、
k="0"
tmp=ASCB(k)
のようにして得ることができますので、こちらは簡単に実現可能だと思います。ちなみに、"0"~"9"は、48~57に対応しています。
ただ、任意の数字を入力する場合は、数字を文字列に変換し、左から1文字ずつ読み取って、それをUNICODEに変換してKBD関数に用いる、という処理になりますので、多少、複雑になります。

もちろん、全角かな入力の場合は、どうしても長くなりますが・・・。全角の数字については、工夫次第だと思います。

質問した人からのコメント

2013/3/29 20:45:37

成功 まだ途中ですが、多分私の理想が出来ると思います!
分かりやすい回答ありがとうございました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる