別アプリのテキストボックスに書き込む

別アプリのテキストボックスに順番に書き込み方法を説明します。

名前、住所などを順番に書き込むときに、
名前をコピーして、貼り付けて、
住所をコピーして、貼り付けて、...
と繰り返すのが面倒なときに役立ちます。

プログラムの流れは、

1、タイトルからウインドウを見つけ、アクティブにする。
2、文字を入力しながら、Tabキーでテキストボックスを移動する。

です。


    'タイトルからウインドウを探す関数
    <System.Runtime.InteropServices.DllImport( _
         "user32.dll", _
         CharSet:=System.Runtime.InteropServices.CharSet.Auto)> _
     Shared Function FindWindow( _
         ByVal lpClassName As String, _
         ByVal lpWindowName As String) As IntPtr
    End Function

    'ウインドウをアクティブにする関数
    <System.Runtime.InteropServices.DllImport("user32.dll")> _
    Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean
    End Function

    '一定時間待たせる関数
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    'ボタンを押すことにより、書き込みが始まることにします。
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim sTitle As String
        Dim hWnd As IntPtr

        sTitle = "TEST"

        hWnd = FindWindow(Nothing, sTitle)

        If Not hWnd.Equals(IntPtr.Zero) Then
            SetForegroundWindow(hWnd)
        End If

        'フォーカスがうまく移らないので
        'タイマーイベントの中で、書き込む
        Timer1.Start()

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Stop()

        '文字列を書き込む
        SendKeys.SendWait("こんにちは")
        'タブで移動させる前に
        '少し待たせたほうがうまくいきます。
        Sleep(50)
        'タブキーを押す
        SendKeys.SendWait("{Tab}")

        '移行繰り返して、入力する

    End Sub


posted by VB.NET+MSDE+ActiveReports at 17:22 | Comment(0) | TrackBack(0) | ファイル・フォルダ
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.sakura.ne.jp/tb/4452296