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 それと、このページへの ショートカット が入っています。やり方が分からなくなった時など、ここにお越しください。
user_register
試してみて、どうだったか、ここをこうしたら良いのではないか、とか、ご意見、ご感想をいただければ幸いです。コメント欄、または「お問い合わせ」からお願いします。
ダウンロードの際に、次のような警告が出ます。^で、継続、ダウンロードした上で、
アンチウイルスソフト(右クリックメニューで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
コメント