【keybd_event】で半角カナ入力を実現する方法

このQ&Aのポイント
  • VB6,Windows XPで動作するAPを作成中です。現在、半角カナ入力を行うために【keybd_event】を使用したいと思っています。カナが表示されたイメージコントロールをクリックすると、対応するカナをテキストボックスに表示したいですが、【SendKeys】を使用せずに実現したいです。【keybd_event】を使用して半角カナを表示する方法を教えてください。
  • 【keybd_event】を使用して半角カナを表示する方法を教えてください。現在、半角カナ入力を行うAPを作成しています。フォーム上にイメージコントロールとテキストボックスがあり、イメージコントロールをクリックすると対応するカナをテキストボックスに表示したいのですが、【SendKeys】を使わずに実現したいと思っています。【keybd_event】を使って半角カナを表示する方法について教えてください。
  • VB6,Windows XPで動作するAPを作成しています。現在、半角カナ入力を行うために【keybd_event】を使用したいと考えています。イメージコントロールをクリックすると、対応するカナをテキストボックスに表示したいのですが、【SendKeys】を使用するのは避けたいです。【keybd_event】を使用して半角カナを表示する方法について教えていただけますか?
回答を見る
  • ベストアンサー

【keybd_event】について

VB6,Windows XPにて動作するAPを作成しています。 現在【半角カナ入力】を行うAPを作っています。 フォーム上に、カナが表示されたイメージコントロールとテキストボックスがあり、 イメージコントロールをクリックされた時に、対応するカナをテキストボックスに表示したいのですが、【SendKeys】は使用したくありません。 調べた結果、【keybd_event】を使用すれば実現出来そうだと思ったのですが、keybd_eventで半角カナを表示するにはどうすればいいのでしょうか? 数字の表示は問題なく出来ています。 ご存知の方教えて頂けると幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

普通に文字列操作するのもなんら変わりはないですが。 Text1 = Left(Text1, Text1.SelStart) & "カ" & Mid(Text1, Text1.SelStart + Text1.SelLength + 1) >その動きを実現するには、文字列連結での制御より、 >SendKeysやkeybd_eventを使用する方が簡単だと思ったからなのです。 入力対象のコントロールにフォーカスを当てたりIMEをいじったりするほうが、よっぽど動きがあいまいで面倒かと思いますけど。

saruru
質問者

お礼

そういうやり方は思いつきませんでした。 やってみます。ありがとうございました。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>フォーム上に、カナが表示されたイメージコントロールとテキストボックスがあり、 >イメージコントロールをクリックされた時に、対応するカナをテキストボックスに表示したいのですが、 >【SendKeys】は使用したくありません。 なぜこの処理でSendKeysやkeybd_eventが必要になるのでしょう? イメージコントロールのクリックイベントで Text1 = "アイウエオ" (実際には半角カナ) って感じで代入するだけだと思うんですけど。

saruru
質問者

補足

レスありがとうございます。 勿論その方法は最初に考えましたが、 既に「アイウエオ」と文字列が入力されていた場合で、「ウエオ」が選択されているとして、「カ」を入力すると「アイカ」となるのが自然ですよね?(選択されている文字列は上書きされるのが普通だから) その動きを実現するには、文字列連結での制御より、SendKeysやkeybd_eventを使用する方が簡単だと思ったからなのです。 意味分かりましたでしょうか? 説明下手ですみません。

関連するQ&A

  • VB.Net フォームのKeyPressイベント

    お世話になります。 日夜 VB.Net でAccess ADPファイルで作ったシステムのリメイクをしております、駆け出しの者でございます。 フォームのイベントでKeyPressイベントがありますが、 Me.ActiveControl.BackColor = Color.LavenderBlush この記述で、フォーム上に配置されているテキストボックなどの背景色を変えられるのですが、マウスで、各コントロールをクリックしても背景色が変わりません。 フォームのClick関係、Mouse関係のイベントで同じ記述をしても、フォームに配置してあるコントロールには適応されないようで、どうしたものかと思っております。(どこか見逃しているのか?!) マウスでテキストボックスなどのコントロールをクリックした時にそのコントロールの背景色を変えるには、例えば100個のテキストボックスがあった場合には、100個のClickイベントに背景色を変えるコードを記述する必要があるのでしょうか?(それは大変だと思うのですが・・・) もし、フォームのマウス、クリックのイベントで ActiveControl の背景色が変更できるイベントや、その他、やり方があるようでしたら、何卒ご紹介いただけますようよろしくお願いいたします。

  • ACCESSのイベントで

    こんにちは。 ACCESSのフォームに、テキストボックスと コンボボックスがいくつかあり、 コマンドボタンが1つあります。 コマンドボタンを押す(クリック)すると、 その直前までアクティブだったコントロールの 名前(cmb○○ or txt○○ にしてます)が 知りたいのです。 どうすればよいでしょうか。お願いします。 ちなみに1つのフォームにコントロールが20~30あり、 そういうフォームが30~40こあるので、 そのコントロールに1つ1つイベントを 追加していく(forcusイベント等で変数に代入していく) 方法以外でお願いします。 なにしろ、全部で1000こ近くあるので・・・

  • ユーザコントロールのイベント取得について(C#)

    環境:Visual Studio 2005 C# Windows Application フォームに自作のユーザコントロールを貼り付けてそのイベントを取得する勉強をしているものです。 フォームでのユーザコントロールイベントを取得して処理をする方法が分かりません。 状況 ユーザコントロールにはテキストボックスを追加しています。 また、フォームにそのユーザコントロールを追加しています。 確認したいことは、ユーザコントロールのテキストボックスになにか値を入力したタイミングでチェンジイベントをフォーム側で察知し、処理をするというものです。 どなたか、要点だけでもいいので教えていただけないでしょうか? 宜しくお願いいたします。

  • フォーカスの移動

    IMEソフトキーボードのようなものを作っています。 フォーム1にテキストボックスがあり、フォーム2をソフトキーボード。というように作りたいと思っているのですが問題があります。 コマンドボタンを押すごとに1文字ずつ送るような作りになっているのですが、1文字ごとにテキストボックスからコマンドボタンにフォーカスが移るため、2文字以上の文字列の変換ができないのです。VB的に無理なのかもしれないですが、IMEソフトキーボードのようにテキストボックスにフォーカスをセットしたままの文字入力を出来ないでしょうか?ちなみにkeybd_eventを使っています。 時間がありましたら、ご教授のほどよろしくお願いします。

  • イベントビューアの操作をしたい

    Windows2000ProSP2でVB6SP5を使用しています。 イベントビューアを起動し、「セキュリティログ」を選択して、「操作(A)」-「ログファイルの名前を付けて保存(A)」、それで名前を付けてCSV形式で保存したいのです。 Shell関数でeventvwr.exeを実行して起動した後、Sendkeysでキー操作をすればいいのかと思ったのですが、 できません。 Shell関数の後でイベントビューアが完全に起動するまで待つ必要があるのではないかと思っています。 実現するには、どのようにすればよいのでしょうか? だめ↓ Shell "eventvwr", vbNormalFocus SendKeys "{DOWN}", Wait SendKeys "{DOWN}", Wait SendKeys "%(a)", Wait

  • 「東京」と入力・変換すると同時に、別のテキストボックスで「トウキョウ」と表示する方法

    VB.6.0で開発しております。 例えば年賀状作成ソフトなどに良く付いている機能で… (1)あるテキストボックスに「とうきょう」と仮名入力して漢字変換する。 (2)すると「東京」と表示されると同時に、別のテキストボックスには「トウキョウ」とフリガナが表示される。 …と、いった機能をVBのテキストボックスで実現するにはどうしたらよいでしょうか。

  • ACCESS メインFからサブFの値を参照

    サブフォームで集計した値をメインフォームで演算値として使用したいのですができません。 サブフォームのフォームヘッダに集計値を入れるテキストボックスを配置し、メインフォームにサブフォームの集計値を参照するテキストボックスを配置しています。 ほんとうはイベントの実行で直接サブフォームの集計値を使った演算を行いたいのですが出来ないのでメインフォームにテキストボックスを作成しました。 サブフォームの集計値は表示しますが、その値を演算値として使用できないのです。試しにMsgboxでメインフォームのテキストボックスの値を表示させると何も表示しません。 なぜメインフォームのテキストボックスにサブフォームの値は表示できるのにその値を使用できないのでしょうか? 具体的には次の通りです。 <サブフォームに配置したテキストボックス>  名前        :テキスト16  コントロールソース:SUM([枚数〕)  書式        :数値 <メインフォームに配置したテキストボックス>  名前        :テキスト130  コントロールソース:[Foms]![メインフォーム名]![サブフォーム名].Form!テキスト16  書式        :数値 <イベント>   MSGBOX テキスト130       ※何も表示されません!

  • VBでローマ字入力とかな入力を使い分けたい時どうすれば??

    VisualBasic6.0を使って、 フォームの上にテキストボックスをふたつ 作ったプロジェクトを新規で作成します。 今、IMEの文字入力方式はローマ字方式を 使っているとします。今半角カナ入力状態に なっているとします。 その状態で、そのテキストボックスの上で Aを3回押すと半角カナでアアアとでます。 テキストボックス上で ALT + ひらがな を押して、かな入力に切り替えます。 そのテキストボックス上でAを3回押すと 半角英数字でaaaと出ます。 もうひとつのテキストボックスをクリックして そっちに移動してから、もとのテキストボックスに 移動します。 そこで、Aを3回押すと半角カナでチチチと出ます。 こういう手順を踏まないとひとつのテキストボックス上 でかな入力とローマ字入力を変えることができないですが 何か方法はないのでしょうか?それともこれは昔から どうしようもないことなのでしょうか? それは、この教えてGOOの質問のタイトルと 質問の内容のテキストボックスでも同じ事が 言えると思います。 普段はローマ字入力で、ある半角カナで入力したい テキストボックスにきた時だけ、何かをして かな入力に変更したいのですが、どうすればよいでしょう? 今、フォームを全画面表示していて IMEツールバーはタスクバーにしまったままにしてお きたいので、IMEツールバー上から変更するという 方法は使えないです。 どなたか親切な方回答お願いしますっ・・・。 また、ちなみにプログラム上から変えることって できるのでしょうか?やるつもりはないですが 一応聞いてみたいです。

  • 半角カナだけが入力できる<input type="text">は可能?

    半角カナだけ入力できるテキストボックスは 作成可能でしょうか? Vbscript だけを使って実現したいと思います。

  • VB2005 コントロールの背景を透過

    フォームにバックグラウンドイメージを設定しているのですが その上にグループボックスやラベルを貼り付けたら、フォームのイメージが隠れてしまいます。 VB6はコントロールに背景を透過にするプロパティがあったので探してみたのですが、見当たりません。 おそらくVB2005でも簡単に透過設定できると思うのですが… グループボックスとラベルを透過に設定する簡単な方法はありますでしょうか? (コントロールの継承になってくる?) また、これはおそらく無理だと思うのですが ピクチャーボックスで表示されている画像の透過部分にも フォームの背景イメージを表示させる、ということは可能でしょうか? よろしくお願い致します。

専門家に質問してみよう