結座藤麓(面倒くさいユーザー登録を簡単に)Ⅱ-お気楽ソフト

ソフト開発 VB エクセル

VB.NETで、エクセル用の結座藤麓、のような自動入力ソフトを作ってみました。

結座藤麓では、エクセルを必要としましたが、この結座藤麓(ゆうざとうろく)Ⅱ

user_register.exe

は、こじんまりとした独立ソフトで、軽く動きます。Windows PC 専用のソフトです。ただ、問題はあなたのPCで、うまく動いてくれるか、ということです。はっきり言って、テストかたがた、使ってみてください、というお願いです。

テキストボックスクリックで、キーストロークを送信

起動しますと、同じフォルダにある、登録情報が書かれたテキストファイルを読み込んで、

のように、フォームが開きます。サンプルとして、test.txtも同梱していますので、そこに、あるいは複製したファイルに、適当に登録用の情報を書き足してください。

.txt に書かれている登録情報を読み込みます

同梱の test.txt は、次のような具合です。

名前
くくろくく
住所
夢の世界
Label3

Label4

Label5
・
・
・

ラベル、テキストボックスは各々14までありますので、14個登録できます。テキストエディタで適当に書いてください。結座藤麓Ⅱ(user_register.exe) と同じフォルダに置いてください。

結座藤麓Ⅱ(user_register.exe) は、起動の際にテキストの内容を、読み取って、ラベル、テキストボックスとして配置します。

ユーザー登録タブの名前を読み込み

右上のテキストボックスに、Chromeのユーザー登録中のタブの名前を先頭から2文字以上入れます。(1文字ではダメみたいです)

または、左上の「送り先アプリ名(一部でも可)または、ここをクリック直後にChromeに移動すること」ボタンをクリックしてから、すぐにChromeのユーザー登録タブに移動すると、タブ名を読み込みます。(ショートカットの連続技で、読み取ります)

(送り先アプリ名を空白のままにしておくと、送りたいテキストをクリックして3秒が経つまでに、送り先のテキストエリアにカーソルを置く必要があります。とにかく、カーソルのあるところにキーストロークを送るので、とんでもないことになる可能性があります。)

テキストをクリックすると、Chromeへキーストロークを送る

例えば、Chromeでユーザー登録中のタブの、名前のテキストエリアにカーソルを置いて(IMEはOFFにしておいてください)、結座藤麓Ⅱ(user_register.exe) に戻り、「くくろくく」とあるテキスト(ボックス)をクリックすると、1秒後にカーソルのあるテキストエリアへ「くくろくく」と、タイプします。(送り先が入力されていない場合は、3秒です-秒数は変更できます) 

結座藤麓Ⅱ(user_register.exe) と同じフォルダにテキストファイルが複数あると、左上の「使用ファイル」から、プルダウンリストで選択できます。一般用とか、何々用とかで、使い分けることができます。

これだけのことです。が、もしこれを使って、不都合が起きましても、当研究所は一切責任を負いませんので、ご理解の上、お試しください。

結座藤麓Ⅱ(user_register.exe) のダウンロード

user_registerフォルダーには、以下のファイルがあります。

以下の圧縮ファイルには、上図のように、結座藤麓Ⅱ= user_register.exe と、サンプルとしてtest.txt それと、このページへの ショートカット が入っています。やり方が分からなくなった時など、ここにお越しください。

試してみて、どうだったか、ここをこうしたら良いのではないか、とか、ご意見、ご感想をいただければ幸いです。コメント欄、または「お問い合わせ」からお願いします。

ダウンロードの際に、次のような警告が出ます。^で、継続、ダウンロードした上で、

アンチウイルスソフト(右クリックメニューでMicorsoft Definderなど)でスキャンしてから、お使い下さい。

コードは以下の通りです。安心していただけたら、使ってみてください。

Public Class Form1
    Private pr_TextBoxes() As TextBox
    Private pr_Labels() As Label
    Private sourcefile As String
    Private Const ITEMSCOUNT = 14
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim fsname(10) As String, FName As String

        pr_TextBoxes = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5,
            TextBox6, TextBox7, TextBox8, TextBox9, TextBox10,
            TextBox11, TextBox12, TextBox13, TextBox14}
        pr_Labels = {Label1, Label2, Label3, Label4, Label5,
            Label6, Label7, Label8, Label9, Label10,
            Label11, Label12, Label13, Label14}
        'WriteFile()
        Dim appPath As String = System.IO.Directory.GetCurrentDirectory()
        For Each FName In IO.Directory.GetFiles(appPath, "*.txt")
            ComboBox1.Items.Add(System.IO.Path.GetFileName(FName))
        Next
        If ComboBox1.Items.Count > 0 Then
            ComboBox1.SelectedIndex = 0
        End If
    End Sub
    Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
        Me.Close()
    End Sub
    Private Sub ReadFile(sfname As String)
        Dim n, m, items As Integer
        Dim w_text() As String = System.IO.File.ReadAllLines(sfname)
        For n = 0 To pr_TextBoxes.Count - 1
            pr_Labels(n).Text = ""
            pr_TextBoxes(n).Text = ""
        Next n
        items = Math.Floor(w_text.Count / 2)
        If items > ITEMSCOUNT Then
            MsgBox("項目は" & ITEMSCOUNT & "個までしか設定しません")
            items = ITEMSCOUNT
        End If
        For n = 0 To items - 1
            m = n * 2
            If w_text(m) = "" Then
                Exit Sub
            End If
            pr_Labels(n).Text = w_text(m)
            pr_TextBoxes(n).Text = w_text(m + 1)
        Next n
    End Sub
    Private Sub TextSendKey(txt As String)
        Dim wtm As Integer = CInt(TextBox15.Text)
        If Len(txt) < 1 Then
            MsgBox("空白です")
            Exit Sub
        End If
        If Len(win_name.Text) > 1 Then
            AppActivate(win_name.Text)
        End If
        For n = 1 To wtm
            System.Threading.Thread.Sleep(1000)
        Next
        On Error GoTo on_error
        SendKeys.Send(txt)
        'SendKeys.Send("{ENTER}")
        Exit Sub
on_error:
        MsgBox("エラー" & Err.Number)
    End Sub
    Private Sub GetCromeTabTitle()
        Dim wtm As Integer = CInt(TextBox15.Text)
        On Error GoTo on_error
        For n = 1 To wtm
            System.Threading.Thread.Sleep(1000)
        Next
        SendKeys.Send("^d")
        System.Threading.Thread.Sleep(100)
        SendKeys.Send("^c")
        System.Threading.Thread.Sleep(100)
        SendKeys.Send("+{TAB}")
        System.Threading.Thread.Sleep(100)
        SendKeys.Send("+{TAB}")
        System.Threading.Thread.Sleep(100)
        SendKeys.Send("{ENTER}")
        win_name.Text = Clipboard.GetText()
        Exit Sub
on_error:
        MsgBox("エラー" & Err.Number)
    End Sub
    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        ReadFile(sender.[text])
    End Sub
    Private Sub TextBox1_Click(sender As Object, e As EventArgs) Handles TextBox1.Click _
        , TextBox2.Click, TextBox3.Click, TextBox4.Click, TextBox5.Click, TextBox6.Click _
        , TextBox7.Click, TextBox8.Click, TextBox9.Click, TextBox10.Click, TextBox11.Click _
        , TextBox12.Click, TextBox13.Click, TextBox14.Click
        TextSendKey(sender.[text])
    End Sub

    Private Sub win_name_TextChanged(sender As Object, e As EventArgs) Handles win_name.TextChanged
        If Len(sender.[text]) > 0 Then
            TextBox15.Text = "1"
        Else
            TextBox15.Text = "3"
        End If
    End Sub
    Private Sub Label17_Click(sender As Object, e As EventArgs) Handles Label17.Click
        GetCromeTabTitle()
    End Sub
End Class

コメント