人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

複数のテキストボックスの中身をコピーして、他のウインドウの同数のテキストボックスにその内容をペーストする必要性が出てきました。
データ1+TAB+データ2+...というようにコピー&ペーストできれば良いと考えているのですが、うまくいきません。
また、コピー元をテキストボックスにせずにテキストエディタにデータ1TABデータ2TAB...と記述してコピー&ペーストをしてもうまくいきません。
おそらく、データ1の入力後、ミリ秒単位で時間を置いてTABを入力し、という作業を繰り返さなければならないと思うのですが、Windowsでどのようにすればそれができるのかがわかりません。
どのようにすれば実現できるでしょうか?また、一括でたくさんのデータを扱うので、VBでの作成例などを教えていただけると大変助かります。うまくできた場合は高ポイント差し上げます。
イメージ的にはオンラインソフトの「ID Manager」の入力項目がもっとたくさんあるバージョンです。

●質問者: smileless
●カテゴリ:コンピュータ 学習・教育
✍キーワード:VB Windows イメージ ウインドウ オンライン
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● zifree
●40ポイント

http://www.hatena.ne.jp/1078308281#

複数のテキストボックスの中身をコピーして、他のウインドウの同数のテキストボックスにその内容をペーストする必要性が出てきました。 データ1+TAB+データ2+...とい.. - 人力検索はてな

VB6での方法です。

まず、ミリ秒単位でウェイトを挟む関数です。

標準モジュールに

Public Declare Function GetTickCount Lib ”kernel32.dll” () As Long

と記述し、

Public Sub Waiter(TT As Long)

Dim T1 As Long, T2 As Long

T1 = GetTickCount()

Do Until T2 - T1 >= TT

T2 = GetTickCount()

DoEvents

Loop

End Sub

以上のコードを書いてください。

例えば

Call Waiter(1000)

で1000ミリ秒=1秒のウェイトを挟む事が出来ます。

WindowsAPIのSleepを使う手もありますが、その場合はプログラムの動作自体が止まってしまいます。ケースバイケースですが、前述の方法の方がいいと思います。

http://www.gj.il24.net/~nakasima/vb/trap/#VBTRAP14

次にVBからキー入力を送る方法ですが、標準で用意されているSendKeysステートメントを使う方法とWindowsAPIのkeybd_eventを使う方法、WindowsAPIのSendInputを使う方法があります。まずSendKeysステートメントは最初から用意されているステートメントのため使うのが簡単ですが、不具合が多いです。

http://www.bcap.co.jp/hanafusa/VBHLP/keyevent.htm

次にWindowsAPIのkeybd_eventですが、Windows2000やXPではMS非推奨の方法です。

http://www.bcap.co.jp/hanafusa/VBHLP/SendInput.htm

一番安全なのがWindowsAPIのSendInputを使う方法です。

これならWindows2000でも大丈夫です。

◎質問者からの返答

詳しいご説明、ありがとうございます。

ミリ単位でWaitをはさむ処理に関しては、

Private Declare Function GetTickCount Lib ”kernel32” () As Long

と記述することで実装できました。

その後の処理に関しては現在コードを書いているところです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ