こういう事をやる方法があれば教えてください。お願いします。
一番目のアプリで処理したデータを一度ファイル(テキストでもなんでも)へ出力します。
そのファイルの先頭へは、処理ステータス(完了日付時刻、成功かどうかなど)の情報も
入れておきます。
2番目のアプリは定期的に実行するか、一番目のアプリからバッチなどを利用して起動し
上記のファイルを読み込み、処理を行います。
コメントで頂いた情報を元にすると、2つのアプリケーションを操作するプログラムを用意する必要があるかと思います。
各アプリケーションの起動などの大部分はWindows Script Host(WSH)、あるいは、Windos PowerShellなんかで制御スクリプトを用意するのが手ごろかなと思います。
参考(WSH)
http://homepage2.nifty.com/pasocon/nyumon/main.html
参考(Windows PowerShell)
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershel...
ただ、これだけだと、メニューからファイルを選択させることができません。
そのため、この部分のみを実行するプログラムを作成する必要があります。
ある程度Windowsプログラミングのスキルは必要になってしまいますが、外部プロセスから、対象とするアプリケーションに対して、WM_FILE_OPENメッセージを送信してあげます。
この他にもこのようにメッセージを送信してあげることによって、外部からプログラムを制御することはある程度可能です。
まとめると、外部から操作するプログラムを作成した上で、制御スクリプトで、
最初に起動するアプリケーションを起動
データが生成されるのに十分な時間待機
データを処理するアプリケーションを起動
WM_FILE_OPENメッセージを送信するアプリケーションを起動し、データを処理するアプリケーションでファイルを読み込ませて処理をさせる。
という処理を作っておけば、このスクリプトを実行することで対応はできます。
ただ、バッチファイルをあまりご存知ない方のようでしたので、メッセージを送るプログラムを作成することはちょっと敷居が高いかなと思います。
何かの参考になれば。
ありがとうございます。
WSHやWindowsPowerShellというのは初めて知りました。これは便利ですね。
ファイルの受け渡しが難しいのですね。VM_FILE_OPENメッセージというのは、何かのプログラミング言語の命令なのでしょうか?検索してみてもあまりヒットしなかったので、分かりませんでした。VBで作成は可能でしょうか。また作成するための知識を得るにはどういう本やサイトを読んだらいいかも良ければ教えていただけないでしょうか。
的外れな質問かもしれませんが、お時間がありましたら、お願いいたします。
すいません。正しくは、ID_FILE_OPENメッセージを送信する必要があります。
VBはあまり使わないのではっきりとは分かりませんが、たぶん、難しいんじゃないかと思います。
以下のサイトにあるAviUtl Controlというツールは、aviutilという通常のアプリケーションをコマンドラインから操作するツールです。ソースも公開されているので、参考になるかもしれません。
http://www.geocities.jp/aji_0/
どういう用途で作成したいのか分かりませんが、ID_FILE_OPENと書いて分からないようだと、誰かに頼んででも作ってもらった方がよいかと思います。
どうしても時間とかを惜しまず無料で自分でがんばるということであれば、
VC++ Express Edition と Platform SDKをインストールすれば、開発する環境は構築できます。
どんな知識が必要かということで言えば、Windowsプログラミングの知識が必要となります。
ただ、書店でVisual C++入門みたいな本を買ってもイマイチ分からないのかなぁという気はします。そこまで、詳しく、かつ、分かり易く書いてある本はあまりないと思うので。
Web上の情報であれば、以下のサイトの内容のWindows SDK編とかを読んで理解できるようになると作成できるかなと思います。ここの中身が分かるようになれば、AviUtl Controlのソースを見て、あ~なるほどと思えると思います。
http://www.kumei.ne.jp/c_lang/
もっとよい参考情報はあるかもしれませんが、何かの参考になれば。
ありがとうございます。
ん~、とても難しそうですね・・・自分で作るのはちょっと無理そうです。
詳しく教えてくださって本当にありがとうございました。
目的のためにプログラミングを習得するのもいいですが、ちょっとした工夫で可能かと。
「マウスの動きを登録して自動で動かすというのは、それぞれの処理の時間が異なるため、できません。」
と書かれていますが、私がよく使うAutoMouseというソフトでは問題なくできますよ。
また、AutoMouseだけでは難しい制御も、先の回答にあったバッチファイルを組み合わせることで可能です。
それぞれのアプリケーションを起動するバッチファイルとは別に、それぞれの動作状態をモニタするバッチを作成して、コンソールに状態を表示してやれば、その表示を基にしてAutoMouseを動かすことができます。
例えば、
1.1番目のアプリケーションが終了した時点で、1番目のアプリケーションを起動したバッチファイルの後続処理でファイルを作ります。(copyコマンド)
2.モニタ・バッチは、ここで作られるファイルを監視し(IF EXIST..)、ファイルが作成されたら、即座に削除(delコマンド)すると同時にコンソールにメッセージを表示します。(echoコマンド)
3.AutoMouseで、上記2のメッセージを監視させ、表示されたら2番目のアプリケーションを起動するバッチを起動します。
4.2番目のアプリケーションを起動したら、AutoMouseでGUI制御をします。
5.2番目のアプリケーションが終了したら、上記1とは違う名前のファイルを、バッチファイルで作ります。(copyコマンド)
6.モニタ・バッチは、上記5で作られるファイル「も」監視し、ファイルが作成されたら、即座に削除すると同時に、コンソールに上記2とは違うメッセージを表示します。
7.AutoMouseで、上記6のメッセージを監視させ、表示されたら1番目のアプリケーションを起動するバッチを起動する...AutoMouseでGUI制御する...
というようなカンジです。
問題は、モニタ・バッチが高速で動き続けないように、ループのどこかになんらかのwaitを入れるなりする必要があるかもしれない、という点ですね。
なお、IF EXISTでは二つの処理を起動できないので、2行並べるか、GOTO処理が必要です。
おー、すごいです!
こんな方法もあるんですね。これなら自分でも出来そうです。
ありがとうございました。
ありがとうございます。
バッチファイルというものがあるんですね。これを作ると実現できるかもしれませんね。
追加質問です。
私が動かしたいアプリケーションは他の方が作られたもので、データのファイルを直接引数として渡すという様なことはできません。その場合、読み込ませるファイルの場所の指定だとか、設定のためのチェックボックスだとかをバッチファイルで操作できるのでしょうか。それと、最初のアプリケーションが終わった時点で、自動でバッチファイルを動かす方法を教えていただきたいです。