Option Strict Off
Option Explicit On
Friend Class Form1
    Inherits System.Windows.Forms.Form
        
    Private Sub Command1_Click(ByVal eventSender As System.Object, _
                               ByVal eventArgs As System.EventArgs) Handles Command1.Click
                
        Dim lngRc As Integer 'APIの返却値

        Command1.Enabled = False  'ボタンを無効

        '-------------------------------------
        ' メモ帳を起動
        '-------------------------------------
        lngRc = Shell(Environ("WINDIR") & "\NOTEPAD.EXE", AppWinStyle.NormalFocus) '起動
        System.Threading.Thread.Sleep(100) '0.1秒待つ(起動完了)
                
        '-------------------------------------
        ' 送信
        '-------------------------------------
        Dim strDt As String
                
        '-------------------------------------
        ' 1文字ずつ送信 50ミリ(0.05)秒間隔
        '-------------------------------------
        Dim i As Integer
                
        strDtSrc = Replace(Text1.Text, vbCrLf, Chr(&H1s)) '改行変換
        For i = 1 To Len(strDtSrc) '文字数分繰り返す
                strDt = Replace(Mid(strDtSrc, i, 1), Chr(&H1s), vbCrLf) '改行文字を復元
                My.Computer.Clipboard.Clear() 'クリップボードをクリア
                My.Computer.Clipboard.SetText(strDt) 'クリップボードにコピー
                Call KeyEvent(VK_CTRL, KEY_DOWN) 'コントロールキーを押下
                System.Threading.Thread.Sleep(1) '指定ミリ秒待つ
                Call KeyEvent(VK_V, KEY_DOWN) '「v」キー押下(貼り付け)
                System.Threading.Thread.Sleep(1) '指定ミリ秒待つ
                Call KeyEvent(VK_V, KEY_UP) '「v」キーを離す
                System.Threading.Thread.Sleep(2) '指定ミリ秒待つ
                Call KeyEvent(VK_CTRL, KEY_UP) 'コントロールキーを離す
                System.Threading.Thread.Sleep(50) '指定ミリ秒待つ
        Next i
              
        '    '-------------------------------
        '    ' 全ての文字を一度に送信する場合は
        '    ' 下記のようにする。
        '    '-------------------------------
        '    Clipboard.Clear         'クリップボードをクリア
        '    Clipboard.SetText strDt 'クリップボードにコピー
        '    Call KeyEvent(VK_CTRL, KEY_DOWN)  'コントロールキーを押下
        '    Call KeyEvent(VK_V, KEY_DOWN)     '「v」キー押下(貼り付け)
        '    Call KeyEvent(VK_V, KEY_UP)       '「v」キーを離す
        '    Call KeyEvent(VK_CTRL, KEY_UP)    'コントロールキーを離す
              
        Command1.Enabled = True  'ボタンを有効

    End Sub
        
    Private Sub Form1_Load(ByVal eventSender As System.Object, _
                           ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        Text1.Text = "SendInput を使った「メモ帳」への入力" & vbCrLf & _
                    "1文字0.05秒" & vbCrLf & vbCrLf & _
                    "寿限無、寿限無" & vbCrLf & _
                    "五劫の擦り切れ" & vbCrLf & _
                    "海砂利水魚の" & vbCrLf & _
                    "水行末 雲来末 風来末" & vbCrLf & _
                    "食う寝る処に住む処" & vbCrLf & _
                    "やぶら小路の藪柑子" & vbCrLf & _
                    "パイポパイポ パイポのシューリンガン" & vbCrLf & _
                    "シューリンガンのグーリンダイ" & vbCrLf & _
                    "グーリンダイのポンポコピーのポンポコナーの" & vbCrLf & _
                    "長久命の長助"
        Command1.Text = "開始"
    End Sub
        
    Private Sub Form1_FormClosing(ByVal eventSender As System.Object, _
                                  ByVal eventArgs As System.Windows.Forms.FormClosingEventArgs) _
                                                          Handles Me.FormClosing
            Dim Cancel As Boolean = eventArgs.Cancel
            Dim UnloadMode As System.Windows.Forms.CloseReason = eventArgs.CloseReason
            End
            eventArgs.Cancel = Cancel
    End Sub
End Class