アプリケーション間で処理のやりとりをするには?

解決


しか  2001-11-13 12:35:09  No: 103763  IP: [192.*.*.*]

片方のアプリケーションでフラグを立てて、その数字をもう1つのアプリケーションに渡して、それを受け取ったアプリケーションがそれぞれの数字別の処理を行うという処理をしたいのですが上手くいきません。
今はGetForgroundWindowで受ける側のハンドルを取得して、SendMessageで送ろうと思ってたんですが・・・。
何か良い方法があったらお願いいたします。

編集 削除
たかみちえ  2001-11-14 00:31:13  No: 103764  IP: [192.*.*.*]

GetForeground…まではたしかあってます
  ええと…。確か後は、SendKeysで送ったと思います。

  ただ、あんまり長い文字列を送ってると、
これでは止まってしまうようです。
自分のほうで文章とかをコピーして、Ctrl+Vを送るのが安全です。
(そうじゃない場合、とりあえず60文字以上は送れないようにしたほうがいいかも…)

Ctrl+Vを送る場所がないソフトが相手の場合、
win.iniとかのどこからも参照できるファイルに書きこむしかないかもですねぇ。

  そういえばVBのソフトどうしにかぎり、
もっとらくにやりとりする方法があると聞いたような聞かないような…。

編集 削除
しか  2001-11-14 09:21:25  No: 103765  IP: [192.*.*.*]

手詰まりです・・・。
どつぼにはまっております・・・。
どうも仕様上、1つ目のアプリケーションから
2つ目のアプリケーションが起動されて、2つ目のアプリケーションは単体でも動く必要があるので1つ目のアプリケーションにメッセージを送るなどの処理はしてはいけないようです。だからあくまで2つ目のアプリケーションのある処理が終わった時点で、1つ目のアプリケーションが2つ目のアプリケーションのステータスを見に行って情報を取ってこなくてはならないのです。
だから前にやろうとしていた方法は使えなくなりました・・・。
GetCurrentProcessIdあたりを使うのでしょうか?
どなたか良いお知恵をお願いいたします。

編集 削除
たかみちえ  2001-11-14 18:13:06  No: 103766  IP: [192.*.*.*]

ええっと、という事は、SendKeysじゃ送れないことなんですよね?
結局キーストロークを渡すだけなので、メニューをクリックさせる事もできますけど…。

  たぶんIDを使う必要はないと思います。
そのAPIはたしかそのソフトの起動確認に使います。
(他にも使えるとは思いますけど…)

  あとは…。ボタンクリックなどはSendMessageでできるので、
それをくみ合わせても…。

  まあ、場合によると思いますけど。

編集 削除
しか  2001-11-14 20:53:45  No: 103767  IP: [192.*.*.*]

今もうちょういのところまできてるんですが・・・。
2つ目のアプリケーションがExitProcessで返した値を
1つ目のアプリケーションがGetExitCodeProcessで取得しに行っているのですが、
どうもExitProcessの書き方がイマイチらしいです。
どこにどう書けばいいのでしょう?

編集 削除
たかみちえ  2001-11-14 23:42:22  No: 103768  IP: [192.*.*.*]

あのー…。
SendKeysなど試していただけました?

  それとも、まーったく的外れなことでしたか?

編集 削除
しか  2001-11-15 09:24:07  No: 103769  IP: [192.*.*.*]

いえ、すみんません。
仕様上のため予定が変わって2つ目のアプリは単体でも動く必要があるため、
自分からSendKeysなどの能動的な動きがとれないのです。
だからあくまで2つ目のアプリは処理が終了した時点で値を返すだけで、その返した値を1つ目のアプリが取に行くという動きにしたいのです。
制御すればいいだけの話かもしれませんが・・・。
分かりにくくてすいません・・・。

編集 削除
しか  2001-11-15 15:56:34  No: 103770  IP: [192.*.*.*]

無事に出来ました〜。
何度もご意見いただき有難うございました。
またよろしくお願いいたします。

編集 削除
たかみちえ  2001-11-15 16:26:22  No: 103771  IP: [192.*.*.*]

おたがいのiniファイルかwin.iniとかのどこからでもアクセス(するパスがわかる)ファイルに書きこんで、
それをタイマーとかで読み取るようにすれば、たいしたAPIを使わずとも…。

  でも解決したようなので、それでいいですね。

編集 削除