2012-01-11 9 views
0

私はC#開発者であり、JavaアプリケーションをC#でプログラムで呼び出す必要があり、Javaアプリケーションのコントロールにアクセス(読み書き)できる必要があります。WinFormsとJavaアプリケーションのインターオペラビリティ

たとえば、検索テキストボックスに商品名を入力してから[GO]ボタンを押して商品を検索するJavaアプリケーションがあるとします。私は、C#(WinForm)アプリケーションを使用してプログラムで手順を実行する必要があります。

サードパーティの実行可能ファイルは、Javaまたは.NETのいずれかで開発することができます。

解決策/ガイドラインを私に提供してください。

ありがとうございます!

+5

こんにちは、歓迎してくださいStackOverflow!これまでに何を試しましたか?何がうまかった?どうしたの? (これは "私には完全な解決策を提供する"タイプではありません。あなたを助けます*あなたのために*あなたの仕事をしません*違いがあります) – Piskvor

+0

私はJavaアプリケーションをプロセスクラスですが、Java実行可能ファイルからコントロールへのアクセスを抽出/取得する方法を見つけることができません。 –

+0

おそらくプログラマー(http:\\ programmers.stackexchange.com)SOサイトの質問ですか? –

答えて

0

アプリケーションをこのようにやりとりする必要がある場合は、Windows APIのinteropを使用してターゲットアプリケーションメッセージを送信したり、コントロール内のデータへのアクセスを制限したりするのが最も安全な方法です。 C/C++/VC/Win32のバックグラウンドをお持ちでない場合、これは難しい作業です。

私は確かにいくつかの有用なリソースを指摘できますが、これは(セキュリティと安定性を含む)多くの理由で推奨されるアプローチではないことに注意してください。生産シナリオで使用することができます。あなたは、ターゲットアプリケーションのソースコードにアクセスすることはできませんし、これらのアプリケーションはAPIを提供していない場合は

EDIT

、用語プロセス間通信は、ここでは適用されません。基本的にはこれらのアプリケーションへの道をハッキングすることになり、その意味を理解しておく必要があります。

これらのアプリケーションを開発していないので、このリンクをご覧ください。私の答えで説明したように、Spy ++のようなツールを使ってターゲットアプリケーションを調べると、コントロールの階層が分かります。 Win APIを使用して、コントロールにメッセージを送信できます。ターゲットアプリケーションが.NET、Jave、Cのいずれで構築されているかは関係ありません。

ローカルマシン上で実行されているかどうかに関係なく、既存のページからデータをスクラップしたり、あなたのアプリケーション内で。 System.Net.WebClientクラスのstring DownloadString (string address)byte[] UploadValues (string address, string method, NameValueCollection data)メソッドを見てください。

+0

http://stackoverflow.com/questions/8699950/csharp-to-java-jn-porting-call-to-run-on-ubuntuこのことに従います –

+0

Ok ..しかしそれは私のクライアントの要件であり、このプロジェクトの主な関心事です。私はgoogledとWCFは、独自のプロセスで実行されている2つ以上のアプリケーション間のプロセス間通信のための良い選択かもしれないことがわかった。だから私にこれを提案してください。また、バックグラウンドで実行されるアプリケーションは、Windowsアプリケーション、Javaアプリケーション、またはWebアプリケーションのいずれかになります。 –

+0

これらのバックグラウンドアプリケーションは、WinFormアプリケーションを通じてアクセスされます。フォアグラウンドアプリケーションは、バックグラウンドアプリケーション内でデータを読み書きすることができ、バックグラウンドアプリケーションのボタンクリックなどのイベントをトリガすることもできます。 –

関連する問題