人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

あるアプリケーションで、これこれこういう処理をして、そのアプリケーションでできたデータを別のアプリケーションで処理をする。というようなことを自動でやりたいです。そういうことをやることはできるのでしょうか。ちなみに、マウスの動きを登録して自動で動かすというのは、それぞれの処理の時間が異なるため、できません。

こういう事をやる方法があれば教えてください。お願いします。

●質問者: Gakuen
●カテゴリ:コンピュータ 学習・教育
✍キーワード:アプリケーション データ マウス 自動
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● hirotie
●25ポイント

一番目のアプリで処理したデータを一度ファイル(テキストでもなんでも)へ出力します。

そのファイルの先頭へは、処理ステータス(完了日付時刻、成功かどうかなど)の情報も

入れておきます。

2番目のアプリは定期的に実行するか、一番目のアプリからバッチなどを利用して起動し

上記のファイルを読み込み、処理を行います。

◎質問者からの返答

ありがとうございます。

バッチファイルというものがあるんですね。これを作ると実現できるかもしれませんね。


追加質問です。

私が動かしたいアプリケーションは他の方が作られたもので、データのファイルを直接引数として渡すという様なことはできません。その場合、読み込ませるファイルの場所の指定だとか、設定のためのチェックボックスだとかをバッチファイルで操作できるのでしょうか。それと、最初のアプリケーションが終わった時点で、自動でバッチファイルを動かす方法を教えていただきたいです。


2 ● t_shiono
●30ポイント

コメントで頂いた情報を元にすると、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で作成は可能でしょうか。また作成するための知識を得るにはどういう本やサイトを読んだらいいかも良ければ教えていただけないでしょうか。

的外れな質問かもしれませんが、お時間がありましたら、お願いいたします。


3 ● t_shiono
●20ポイント

すいません。正しくは、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/


もっとよい参考情報はあるかもしれませんが、何かの参考になれば。

◎質問者からの返答

ありがとうございます。

ん?、とても難しそうですね・・・自分で作るのはちょっと無理そうです。

詳しく教えてくださって本当にありがとうございました。


4 ● aki1960
●30ポイント

目的のためにプログラミングを習得するのもいいですが、ちょっとした工夫で可能かと。

「マウスの動きを登録して自動で動かすというのは、それぞれの処理の時間が異なるため、できません。」

と書かれていますが、私がよく使う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処理が必要です。

◎質問者からの返答

おー、すごいです!

こんな方法もあるんですね。これなら自分でも出来そうです。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ