• 締切済み

別のアプリケーションのテキストフィールドに入力する方法

他のアプリケーションのテキストフィールドがフォーカスを持っていて、そこにテンキーの「1」を入力した場合、「おはよう」と表示され、さらに改行コードも送れるプログラムを作りたいと思っています。 ヒントが掲載されているHPや書籍などの情報があれば教えていただきたいと思います。 また、お手数でなければ、具体的なコードも教えていただければありがたいです。 開発環境は VB6、OSはXP ProSP2 です。

みんなの回答

  • fantom
  • ベストアンサー率31% (30/94)
回答No.1

キーフックを使って作るのが王道のようですが、 どうもややこしそうなので思いついたソースだけ記述します。 質問者さんの思っている動きとは違うかもしれませんが、、。 以下ソースをVBで実行後、 Windows標準のメモ帳を起動し1を入力してみてください '--------------以下貼り付けてください----------------- Private Declare Function FindWindowA Lib "user32" (ByVal cnm As String, ByVal cap As String) As Long Private Declare Function FindWindowExA Lib "user32" (ByVal hpar As Long, ByVal hchi As Long, ByVal cnm As String, ByVal cap As String) As Long Private Declare Function SendMessageA Lib "user32" (ByVal hwd As Long, ByVal Msg As Long, ByVal wpara As Long, ByVal lParam As Any) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Const WM_GETTEXT = &HD Const WM_SETTEXT = &HC Private Sub Form_Load() Dim hwd As Long, hwd_c As Long Dim cap As String, ret As Long cap = Space$(200) Do 'メモ帳のハンドル取得 hwd = FindWindowA(vbNullString, "無題 - メモ帳") 'メモ帳のテキストハンドル取得 hwd_c = FindWindowExA(hwd, 0, "Edit", "") 'メモ帳のテキストを取得 ret = SendMessageA(hwd_c, WM_GETTEXT, 200, cap) 'メモ帳のテキストを検索 If InStr(1, cap, "1", vbTextCompare) > 0 Then '1が入力されているなら置き換えて送信 Call SendMessageA(hwd_c, WM_SETTEXT, 0, "おはよう" & vbCrLf) End If DoEvents Sleep (1000) Loop End Sub '--------------------------------------------- '以下参考にしたURLです http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t02.htm http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200606/06060083.txt

xiaolong_goo
質問者

お礼

早速のお返事とコードありがとうございます。 なんとなく、わかったような気がしました。 参考URLも使っていろいろ研究してみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストフィールドのフォーカス設定について

    どなたかご存知でしたら是非ご教示ください。 インスタンス名が「id」というテキストフィールドをステージに配置します。 1フレーム目に、   Selection.setFocus("_root.id"); というスクリプトを書きます。 これで、再生したらテキストフィールドにフォーカスが設定されると期待しているのですが、そうなりません。 そこで、ボタン用のムービークリップを作り、ステージに配置(インスタンス名:focusSetButton)し、   _root.focusSetButton.onRelease = function() {     Selection.setFocus("_root.id");   } というスクリプトを1フレーム目に書きます。 これでムービーを再生してもフォーカスは設定されませんが、「focusSetButton」をクリックすると、フォーカスが設定されます。 ユーザーのアクションを伴わない場合は「Selection.setFocus」は無効で、ボタンクリックのようなユーザーアクションが伴うと有効になるのは何故なんでしょうか? また、ユーザーアクションが伴わずにフォーカスを設定する方法はあるでしょうか? 動作環境はWindows XP ServicePack 2のFlash 8です。 この現象は、アプリケーション上での再生でも、フラッシュファイル単体での再生でも、HTML内での再生でも起きます。 何かヒントになるようなことでもかまいませんので、よろしくお願いいたします。

  • フォーカスする際のテキストフィールド名を変数で渡したい

    表のような入力フォームがあって、submitした際にあるプログラムが走り、HTML本体を再読み込みしています。 画面が表示されたときに、テキストフィールドにあらかじめフォーカスを合わせるには、以下のOnloadとfocus()を使いますよね? <body onLoad="document.Form.Field.focus()"> で、再読み込み時には、次の入力用テキストフィールドへフォーカスを合わせたいのですが、どうすればいいでしょうか? 例えば A1 A2 A3 というとき、A1を入力後、後ろでプログラムが走り、再読み込みして画面が再表示されたときに、A2にフォーカスがうつっている、という感じです。通常の書き方だとBodyにはひとつか(A1しか)かけないので・・・変数を使ったらどうかと思ってやってみましたがうまくいきません。 <SCRIPT LANGUAGE="JavaScript"> <!-- var f; f = "A1"; window.alert(f); //--> </SCRIPT> <body onLoad="document.Form.(f).focus()"> 又は <body onLoad="document.Form.var(f).focus()"> <body onLoad="document.Form.f.focus()"> フィールドにindextabをしてみましたがダメでした。又A1にonBlurが入っております。 そもそも変数なんて使えるのでしょうか? 変数以外の方法でも、他にアイディアがあればお願いします。 締切りが明日で非常にあせっています。 よろしくお願いいたします。

  • VB6のアプリケーションで入力した値をASPで表示する方法を探しています。

    質問させていただきます。 VB6で作成したアプリケーションからASPのページを呼び出す プログラムを作成しています。 アプリケーション側で入力した値を引数として渡し、 ASPのページで表示させたいのですが、どのようにすれば いいでしょうか? 方法や参考になるサイトなどありましたらお願いします。 開発環境は Windows2000 VB6 IIS5.0 です。

  • ASP.NET テキストフィールドの日付

    お世話になります。 現在 勉強の為に、既存のAccessで作成されているアプリケーション から ASP.NET に作り変えている最中でございます。 そこでテキストフィールドの事でお尋ねしたいことがあります。 例えば Access で日付フィールドを作成し 8/13 と入力すると Access が自動的に 不足している2012/ という文字を付加し、2012/08/13 と入力を補正してくれますが、 ASP.NET で これを実現させるためには何をしたらよいのでしょうか? どこかプロパティで設定する個所や、VBで記述しないといけない場所などございましたら、 何卒ご教授いただければと存じます。 よろしくお願いいたします。

  • VBでアプリケーションを自動操作したい。

    VBでアプリケーション(動画編集ソフトなど)の特定の操作をワンクリックで実行させたいと思っています。そのようなことが載っている書籍をさがしているのですが、なかなか見つけられません。 具体的なコードがわかれば、その機能に関する記述のある書籍を探せば見つけられるかなと思いました。 そこで、VBでアプリケーション(動画編集ソフトなど)を操作する際に、どのようなコードを使用するのか教えていただけないでしょうか?

  • 改行されていないテキストデータ

    改行コードがないテキストデータがあります(半角23,250文字) VB.NET2003で取込ながら、250文字で改行したいのですが、 どんな方法がありますでしょうか? 宜しくお願い致します。

  • VS.NET2003 WEBアプリケーションのテキストボックスのIMEを設定したい

    開発環境 VISUAL STUDIO 2003  言語 VISIAL BASIC アプリケーション WEBアプリケーション やりたいこと フォームがLOADされたときに、テキストボックスのIMEが 半角英数字になっています。 そのテキストボックスは かならず全角文字しか入れないところなので、 フォームがLOADされたときに、すでに全角に強制的に セットしたいのですが・・・・・ インターネットで検索してコードを探すことが出来ず 手持ちの書籍でも、その文献がありませんでした。 どのようにコーディングしたら、最初から全角に 出来るでしょうか。 どうぞよろしくお願いいたします。

  • テキストフィールドについてのAppleスクリプト

    ApplescriptもしくはAutomatorでテキストフィールドにフォーカスされたことを検出し、操作を実行する方法はありませんでしょうか。 具体的にはMacに接続した液タブ等で、キーボードビューアを用いてタッチ入力で文字入力をしたいと考えているのですが、キーボードビューアを表示したり隠したりできるscriptはしらべてわかったものの、テキスト入力フィールドが選択されていることを検知できるようなScriptがなかなか見つかりません。 そもそもそのようなScriptは存在しないのでしょうか。 これを行いたい理由としましてはデスクの上にはつねにタブレットが配置されており、普段長文の入力を行うこともないため、物理キーボードを配置しなくてもよい状況を作りたいとかんがえたのですが、スクリプトをアプリケーションとして保存してDockに登録しておく方法ではあまりスマートではないと感じたためです。 iOSのようにテキスト入力の際のみ都合良く画面に表示されてくれればとても良いのにと考え、ご質問した次第です。 ご教示のほどお願い致します。

    • 締切済み
    • Mac
  • 一度もフォーカスされないテキストフィールドの内容をJavascriptで書き換えるには?

    http://www.d-project.com/zenhanconv/index.html ここで頂いてきたスクリプトで、テキストフィールド内の半角カナを全角に置き換えようとしています。 このダウンロードページにあるサンプルフォームをほぼそのまま流用しようとしているのですが、このままの場合、テキストフィールドに何か文字列を打ち込んでフォーカスを外すとonblurでJavascriptが作動して文字列が変換されるのですが、私が使おうとしているフォームはこのページは、ショッピングカートでお届け先を記入してもらうページで、既登録社の場合はテキストフィールドにはページ読込時に外部ファイルから元々文字列が読み込まれてしまうので、文字列を変換したいテキストフィールドは一度もフォーカスされることも書き換えられることもなく、onblurは働かず、仮にonchangeとかにして、書き換えが発生しない以上これも意味を成しません。 onSubmitで何とかならないのかなとも考えたのですが、これはテキストフィールドを対象に使うイベントハンドラではないそうで、やはり対策になりません。 読み込む外部ファイルは元々決まった形で、あるアプリケーションから自動的にアップロードされるファイルなので「外部ファイルを書き出す時点で半角カナを全角に置き換えておく」という方式に変更する方法が無く、また、このフォームを受け取るCGIも他と共用のものなので改造は出来ません。 Javascript内だけで何か対策はないものでしょうか?

  • テキストサービスについて

    お世話になります。 VB.NETで開発しています。APIの関数でテキストサービスの制御はできるのでしょうか?テキストサービスの制御自体がコード上で可能なのかどうかを知りたいです。どなたかご存知の方がおりましたらご教授お願いいたします。 開発環境は、VB.NET2003、IME2002になります。