- - PR -
他のアプリケーションにデータを渡したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-11-21 12:30
お世話になります。
C#で作成したアプリケーション(ここではAアプリと呼びます)から、 Processメソッドなどを使えば、他のアプリ(メモ帳、電卓、Officeなど)を 起動したり、呼び出すことはできますが、 例えば、Aアプリのテキストボックスに入力した情報を、 メモ帳を呼び出し、その情報をメモ帳に送る、 といった仕組みを用意したいのですが、どなたか解説いただけないでしょうか。 過去のスレッドや、どこかのサイトに答えがあるようでしたら、 それを見ますので、ご指摘いただければと思います。。 よろしくお願いします。 | ||||
|
投稿日時: 2008-11-21 12:47
Process.Start メソッドにはコマンドライン引数を指定できるオーバーロードがあります。
文字列なら、このメソッドで情報を送れます。 参考URL: http://msdn.microsoft.com/ja-jp/library/h6ak8zt5.aspx _________________ Nakamura Blog | ||||
|
投稿日時: 2008-11-21 14:23
すみません。
自分の質問が舌足らずだったと思います。 実現したいことは、 @Aアプリにテキストボックスとボタンがある。 Aテキストボックスに「こんにちは」と入力して、ボタンを押すと、 Bメモ帳が開き、「こんにちは」というテキストが入力されている。 そういう仕組みを作りたいのです。 汎用的に、Aの部分が数字、Bの部分が電卓、、というふうに。。 Processメソッドにこだわりがるのではなく、 他のアプリケーションに、自動的にテキスト等の情報を渡せる、 そんな基本的な手法を知りたいと思っています。 よろしくお願いします。 | ||||
|
投稿日時: 2008-11-21 14:43
とりあえず、メモ帳や電卓が相手なら SetWindowText関数 が使えます。
ただ、事前にウィンドウを知っていないと使えないし。今後は使えないアプリケーションも増えてくると思います。Webアプリケーションでは使えない(IEのコンテンツ領域に表示されるテキストボックス、コンボボックスなどのコントロールはウィンドウではないから。) 同様に、Java/Swing アプリケーションもウィンドウじゃないからダメ。WPFアプリケーションは作ったことないけど、きっとダメだと思います。 | ||||
|
投稿日時: 2008-11-21 14:50
確認なんですが
Bで起動するのは (A)自分で作成するアプリケーション (B)メモ帳や電卓やWordといった、他者が作成したアプリケーション(用はソースコードを修正できないもの) (C)両方 のどれに当てはまるのでしょうか? _________________ Nakamura Blog | ||||
|
投稿日時: 2008-11-21 15:04
(B)メモ帳や電卓やWordといった、他者が作成したアプリケーション(用はソースコードを修正できないもの)
になります。 @Aアプリにテキストボックスとボタンがある。 A(Aアプリを起動した後、)テキストボックスに「こんにちは」と入力して、ボタンを押すと、 Bメモ帳が開き、「こんにちは」というテキストが入力されている。 ここで、「メモ帳が開き」というのは、 ボタンに割り当てたメソッドにより、他者が作成したアプリケーションが起動して、 という意味です。 ただ単に、他者が作成したアプリケーションを起動させるだけなら、 Processメソッドなどで実現できますが、 他者が作成したアプリケーションを起動(あるいはアクティブに)したうえで、 テキスト等の入力までおこなわせたいと考えています。 | ||||
|
投稿日時: 2008-11-21 18:37
こんばんは。
クリップボードにテキストをコピーしておいて、 相手アプリケーションに無理やりペーストしてやるとか… でも、相手アプリケーションに入力項目が複数ある場合どうしましょう!? | ||||
|
投稿日時: 2008-11-21 18:52
メモ帳
http://mt-soft.sakura.ne.jp/web_dl/vb-parts/key_sendmessage/ 電卓 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t02.htm 単純なアプリであれば、テキストボックスのウインドウハンドルを取得して、WM_SETTEXTをSendMessageすればよいです。 テキストボックスのウインドウハンドルの取得方法は、あらかじめSpy++などのツールでクラス名やコントロールIDを調べておきます。 OfficeやIEであれば、オートメーションという手があります。 [ メッセージ編集済み 編集者: todo 編集日時 2008-11-21 18:53 ] |