コンソール自動入力

<ConsoleInput>


(ダウンロードは ↓ 下の方 ↓ にあります)

(操作画面)


1.概要

Windowsでコンソールアプリにデータの送信を行うプログラムです。

実行するには、.Net Framework のランタイムが必要です。


2.使い方

ファイル

ConsoleInput.exe

ConsoleInput.exe.config

ConsoleInput.ini

を同一フォルダに置いて、

ConsoleInput.exe

をダブルクリック等で起動します。


起動すると、操作画面が表示されます。

「送信先ウィンドウのタイトル」のテキストボックスには、

データ送信先となるコンソールアプリのタイトル文字列を入力します。

そして、「送信データ」のテキストボックスには送信データの内容を入力し、

送信ボタンクリックによりデータを送信します。

ファイル読込ボタンをクリックすると、送信データをファイルから読み込みます。

ファイル保存ボタンをクリックすると、送信データをファイルに保存します。

画面右上の×ボタンをクリックすると、プログラムを終了します。


(注意)送信中にウィンドウを操作すると、送信先ウィンドウのフォーカスが外れて、

正常に送信できません。送信中は、操作を行わないようにしてください。


3.初期設定ファイル

起動時には、初期設定ファイルを読み込みます。

初期設定ファイルのファイル名は、デフォルトでは ConsloeInput.ini になります。

ショートカット、もしくは、コマンドラインから起動する場合には、

引数によって、初期設定ファイルのファイル名を指定できます。

例えば、

ConsoleInput.exe test.ini

とすると、test.ini を初期設定ファイルとして読み込みます。


初期設定ファイルは、メモ帳等で編集が行えます。

ファイルの内容は以下の通りです。

[Setting]

WindowState=0 ← 起動時最小化設定(=0:通常,=1:最小化,=2:最大化)

CharSet=0 ← 文字コード設定(=0:SJIS,=1:UTF-8,=2:UTF-8N)

SendWindowTitle=コマンド プロンプト ← 送信先ウィンドウのタイトルの初期値

TitleCheckMode=0 ← タイトルの判定条件(=0:部分一致を許可,=1:完全一致のみ)

DialogFolder= ← ファイルダイアログの初期選択フォルダ(空ならConsoleInput.exeの存在するフォルダ)

AfterActivateSleep=100 ← 送信先ウィンドウアクティブ化後のスリープ時間(msec)

AfterSendSleep=0 ← データ送信後のスリープ時間(msec)

DisableAfterSendFocus=0 ← データ送信後のフォーカス設定無効化(=0:有効,=1:無効化)

AutoLoadFile= ← 自動読み込みデータファイル名(空なら自動読み込みなし)

EnableAutoSend=0 ← 自動データ送信有無(=0:なし,=1:あり)

DisableCommand=0 ← コマンド使用無効化(=0:有効,=1:無効化)

DisableKeyboard109Caret=0 ← 109キーボード「^」キー対策無効化(=0:有効,=1:無効化)

DisableAutoEnter=0 ← 自動改行無効化(=0:有効,=1:無効化)

EnableAutoIME=0 ← 自動IME制御有無(=0:なし,=1:あり)

SendDataInterval=0 ← データ送信間隔(msec)(1行送信するごとにこの時間だけスリープします。0ならスリープなし)


4.コマンド

送信データの中には、コマンドを記述できます。

コマンドは、コンソールアプリには送信されず、定められた処理を実行します。

コマンドは、#( で始まり ) で終わります。

行の途中にコマンドを挿入する場合には、#( で始まり )$ で終わるようにします。

また、##と書くと、行末までコメント扱いになり、その部分は無視されます。

#を単に文字として送信したい場合には、\# と記述してください。

また、\を単に文字として送信したい場合には、\\ と記述してください。

使用可能なコマンドを以下に示します。

(アルファベット、数字、各種記号等はすべて半角です)


#(sleep スリープ時間)

一定時間スリープします。

スリープ時間は 1000 のように数値で指定します。単位はmsecです。


#(key キーコード)

指定したキーコードを送信します。

キーコードは "{TAB}" のようにダブルクォートでくくって指定します。

使用可能なキーコードについては、以下のページを参照ください。

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.sendkeys.send.aspx


#(kanji モード)

漢字キーを送信します。

モードには 1 のように数値を指定します。

モード=1 とすると、Enterキーを送信後、漢字キーを送信します。

モード=2 とすると、Enterキーを送信後、Alt+漢字キーを送信します。

モード=3 とすると、漢字キーを送信します。

モード=4 とすると、Alt+漢字キーを送信します。

モード=0 とすると、何も送信しません。


#(msgdlg 表示メッセージ)

メッセージダイアログを表示します。

表示メッセージは "ボタンを押してください。" のようにダブルクォートでくくって指定します。

表示メッセージは省略可能です。

省略した場合には、"ボタンを押してください。" と表示します。


#(yesnodlg 表示メッセージ)

Yes/No選択ダイアログを表示します。

このとき、Noを選択すると送信を中止します。

表示メッセージは "続行しますか?" のようにダブルクォートでくくって指定します。

表示メッセージは省略可能です。

省略した場合には、"続行しますか?" と表示します。


#(autoenter モード)

送信データの改行ごとに{ENTER}を送信するかどうかを指定します。

モードには 1 のように数値を指定します。

モード=1 とすると、改行ごとに{ENTER}を送信します。

モード=0 とすると、改行ごとに{ENTER}を送信しません。

デフォルトは モード=1 です。


#(autoime モード)

日本語の送信後に常に漢字キーを送信するかどうかを指定します。

モードには 1 のように数値を指定します。

モード=1 とすると、日本語の送信後に、Enterキーを送信後、漢字キーを送信します。

モード=2 とすると、日本語の送信後に、Enterキーを送信後、Alt+漢字キーを送信します。

モード=3 とすると、日本語の送信後に、漢字キーを送信します。

モード=4 とすると、日本語の送信後に、Alt+漢字キーを送信します。

モード=0 とすると、日本語の送信後に、何も送信しません。

デフォルトは モード=0 です。


#(interval 送信間隔)

以後、1行送信するごとにスリープします。

送信間隔は 100 のように数値で指定します。単位はmsecです。

送信間隔を 0 にするとスリープなしになります。

デフォルトは、スリープなしです。


5.その他 ノウハウ等

(1).Net FrameworkのSendWait命令(データ送信命令)について

(a)app.config の件

app.config に

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

を書かないと、SendWait命令が正常に動作しない。


app.config は、コンパイル後は、

実行ファイル名.config というファイルになるので、

配布時にはこのファイルも一緒に配布する必要がある。


また、app.config を開発環境で開いたままにしていると、

コンパイル時に「スキーマ情報が見つかりませんでした」

という警告が出る。

このため、編集後は app.config を閉じる必要がある。


(b)「^」キーを送信できない件

109キーボード(日本語キーボード)では、SendWait命令で「^」キーを送信できない(「&」に化ける)。

102キーボード(英語キーボード)では、SendWait命令で「^」キーを送信できるらしい。

これは、SHIFT + 6 が102キーボードでは ^ になるが、

109キーボードでは & になるためとのこと。

このため 「^」キーだけは Win32 API のkeybd_event命令等で送信する必要がある。


(c)日本語入力が勝手にONになる件

コンソールアプリの中には、SendWait命令で日本語を送信すると、

IMEの日本語入力が勝手にONになるものがある。

このとき、Win32 API のkeybd_event命令でEnterキーと漢字キーを送信すれば、

日本語入力をOFFに戻せる。(ただし タイミングの関係で失敗することもあるもよう)


6.環境

OS : Windows 10 (version 21H2) (64bit)

開発環境 : Visual Studio Community 2019

(v1.06 までは Visual Studio 2010 Pro SP1)

(v2.06 までは Visual Studio 2015 Pro Update3)

(v3.01 までは Visual Studio Community 2017)

.Net Framework 4.6.2

(v3.01 までは .Net Framework 4 Client Profile)

開発言語 : VB.NET


7.履歴

2014-1-1 v1.00 (初版)

2014-1-3 v1.01 初期設定ファイルの読み込み処理修正(CharSet)

2014-1-5 v1.02 コマンド追加(kanji)

送信先ウィンドウタイトルの検索方法変更

2014-1-5 v1.03 コマンド追加(autoime)

初期設定ファイルの項目追加(DisableAutoEnter,EnableAutoIME)

2014-5-2 v1.04 自動IME制御ありのときに 最後の自動改行が行われない件を修正

2014-6-2 v1.05 コマンド追加(interval)

初期設定ファイルの項目追加(SendDataInterval)

2015-2-2 v1.06 ファイル読み込みダイアログの初期選択修正

2016-9-5 v2.00 1行に複数のコマンドを記述した場合の処理修正

ファイル読み込みダイアログのフィルターを設定

送信中はコントロールを無効化

2016-9-6 v2.01 ファイルのパス名の処理修正

メソッド名の先頭の文字を大文字に変更

APIの宣言修正。その他、書式修正等

2016-9-6 v2.02 テキストボックスのカーソル処理修正

自動送信中はコントロールを無効化

sleepコマンドに負の値を指定するとエラーになる件を修正

2016-9-7 v2.03 送信データの処理見直し等

2016-9-8 v2.04 コマンドの処理見直し等

2016-9-9 v2.05 初期設定ファイルの項目追加(TitleCheckMode)

2017-4-9 v2.06 コマンドの処理一部見直し

2017-7-23 v3.00 開発環境更新。コメント変更(機能変更なし)

2018-7-1 v3.01 送信データ中の \\ を \ に変換するようにした(コマンド使用時のみ)

2022-8-20 v4.00 開発環境更新。ソースコード一部見直し(主にVSのコード分析結果による)

2022-8-22 v4.01 フォルダ構成見直し


Google Drive のチェックに引っかかったものについては、

ソースのみダウンロード可能です。(2022-8-22)


<ダウンロード v4.01

ConsoleInput_src.zip (2022-8-22 ソースのみ)


<旧バージョン v3.01>

ConsoleInput_oldH_v301_src.zip (2018-7-1) (2022-8-22 ソースのみ)


<旧バージョン v2.06>

ConsoleInput_oldF_v206_src.zip (2017-4-9) (2022-8-22 ソースのみ)


<旧バージョン v1.06>

ConsoleInput_old7_v106.zip (2015-2-2)