2012-01-11 74 views
0

我是一個C#開發人員,要求是用C#編程調用Java應用程序,我應該能夠獲得訪問(讀/寫)的Java應用程序的控制。WinForms和Java應用程序interopatibility

例如,假設有是由打在搜索文本框中輸入產品名稱,然後爲產品搜索的Java應用程序「GO」按鈕。我必須用C#(WinForm)應用程序以編程方式執行這些步驟。

第三方可執行文件可以用Java或.NET開發。

請爲我提供解決方案/指南。

在此先感謝!

+5

你好,歡迎來到StackOverflow!你試過什麼了?什麼工作?什麼沒有? (這不是一個「給我一個完整的解決方案」類型的網站;我們將*幫助*你,但不*爲你做你的工作*。有區別)。 – Piskvor 2012-01-11 09:08:24

+0

我試圖加載Java應用程序Process類,但我無法找到從Java可執行文件中提取/訪問控件的方法。 – 2012-01-11 09:36:12

+0

可能是程序員的問題(http:\\ programmers.stackexchange.com)SO網站? – 2012-01-11 09:39:59

回答

0

如果必須進行應用程序的交互這種方式,你最安全的選擇將是使用互操作與Windows API發送目標應用程序的信息和/或獲得其控制範圍內有限的資料。如果您沒有C/C++/VC/Win32背景,這可能是一項具有挑戰性的任務。您需要熟悉Windows API,結構等。

我當然可以向您提供一些有用的資源,但請注意,由於多種原因(包括安全性和穩定性),這不是一個推薦的方法,並且絕不應該在生產場景中使用。

編輯

如果您沒有訪問目標應用程序的源代碼,並且這些應用程序不提供API,術語進程間通信在這裏並不適用。你基本上會闖入這些應用程序,並應該意識到這些影響。

由於您還沒有開發這些應用程序,請看這個鏈接。正如我在答案中所解釋的那樣,您可以使用Spy ++之類的工具來檢查目標應用程序以找出控制層次結構。然後,您可以使用Win API向控件發送消息。無論目標應用程序是建立在.NET,Jave還是C中。

如果是web應用程序,無論是在本地機器上運行還是在外部運行,都可以從現有頁面中抓取數據,並且可以從在你的應用中。看看System.Net.WebClient類的string DownloadString (string address)byte[] UploadValues (string address, string method, NameValueCollection data)方法。

+0

http://stackoverflow.com/questions/8699950/csharp-to-java-jni-porting-call-to-run-on-ubuntu遵循這個東西 – 2012-01-13 11:35:18

+0

確定..但這是我的客戶的要求,所以這是該項目的主要關注點。我搜索了一下,發現WCF可能是兩個或更多應用程序在他們自己的進程中運行的進程間通信的不錯選擇。所以請在此建議我。而且,將在後臺運行的應用程序可以是Windows應用程序,Java應用程序或Web應用程序。 – 2012-01-13 12:36:01

+0

這些後臺應用程序將通過WinForm應用程序訪問。前臺應用程序可以在後臺應用程序中讀取/寫入數據,還可以觸發事件,如後臺應用程序的按鈕點擊。 – 2012-01-13 12:43:59