牛、豚、鶏、どれか一つ食べられなくなるとしたら?

コマンドプロンプト上で動作するプログラムを別プログラムから操作する方法を考えています。

たとえば、C言語の入門書によく見られるような、以下のプログラムを作ったとします。プログラム名をtest.exeとします。
・ユーザーに数字を入力させ、その数字の2倍を答えとして表示する。
・答えを表示したらまた入力まちになる。
・ユーザーが"q"を入力すると終了する。

test.exeを実行すると、コマンドプロンプトが起動し、数字の入力まちになります。

さて、ここからが質問です。
このプログラムをVBAなどの別のプログラムから実行する方法はないのでしょうか?このプログラムは、数個の数字を入力するくらいだったら手動でも問題ありません。しかし、数十個、数百個の数字を入力する必要があった場合、これを手動でやっていては埒が明きません。そのため、VBAやその他のプログラミング言語などから自動的に数字を入力していくプログラムは作れないかと考えています。
たとえばVBAなどでFor文で入力する数字を繰り返す。といった感じ。
このようなことを実現する場合、どのように考えていけばいいのでしょうか?正直、今現在、想像もできていません。

考え方や、方法を教えてください。また、できるとしたら、そのプログラミングレベルはかなりのものを要しますか?一応私はプログラミングやVBAは初心者の部類です。

よろしくお願いいたします。

A 回答 (3件)

VBAでもできると思いますが、コマンドラインのプログラムであれば、普通はバッチファイルでやるような話だと思います。



(そのプログラムのパラメータがどのようになっているかによりますけど)

例えば、仕事で使うようなコマンドラインのプログラムは対話式のインターフェースよりも「パラメータ(引数)を与えて処理する」ものが多いと思います。
対話式であっても、パラメータ処理も可能である場合が殆どです。

ご質問の例にある、test.exeであれば

test.exe 1
test.exe 2
test.exe 3

のようなコマンドの羅列をあらかじめ用意してバッチで一気に流す事が可能です。
FOR文を使えば、パラメータだけを他のテキストに書いておき、その行数分、test.exeを実行するような事も可能です。
    • good
    • 0

使ったことはありませんが、自動操作のソフトが色々あります。


http://www.vector.co.jp/vpack/filearea/win/util/ …

標準のツールでやるとすると、VBScriptやVBAなどのSendkeysコマンドで、キーをコマンドプロンプトウィンドウに送るくらいです。
何がウィンドウに出ているかは検知できませんので、適当に時間待ちを入れながらキーを送ることになります。
    • good
    • 0

本気でやると,非常に面倒くさいです。


参照するのは
MSDN: Creating a Child Process with Redirected Input and Output
http://msdn.microsoft.com/en-us/library/ms682499 …
あたりでしょうか。

・入力は標準入力からである (強制的にキーボード入力にしていない)
・出力は標準出力である (強制的にコンソール出力にしていない)
を満たすのであれば,コマンドプロセッサのリダイレクト機能を使ってしまった方がよいでしょう。
test.exe < input.txt > output.txt
のようなことをすれば,プロセスが終了した時点で「出力」がoutput.txtに書き出されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!