2012-01-11 3 views
0

Я разработчик C#, и требование - программно вызвать приложение Java с помощью C#, и я должен иметь возможность получать доступ (чтение/запись) к элементам управления Java-приложения.Взаимосвязь WinForms и Java

Например, предположим, что есть приложение Java, которое ищет продукт, введя имя продукта в текстовое поле поиска, а затем нажав кнопку «GO». Я должен делать эти шаги программно с помощью приложения C# (WinForm).

3-сторонний исполняемый файл может быть разработан либо на Java, либо в .NET.

Просьба предоставить мне решения/рекомендации.

Заранее благодарен!

+5

Добро пожаловать в StackOverflow! что ты уже испробовал? Что сработало? А что нет? (Это не тип «дайте мне полное решение», мы * помогаем вам, но не делаем вашу работу за вас *. Есть разница.) – Piskvor

+0

Я попытался загрузить приложение Java с помощью Класс процесса, но я не могу найти способ извлечь/получить доступ к элементам управления из исполняемого файла Java. –

+0

Возможно, вопрос для программистов (http: \\ programmers.stackexchange.com) SO-сайта? –

ответ

0

Если вы должны заставить приложения взаимодействовать таким образом, ваша самая безопасная ставка будет заключаться в использовании взаимодействия с Windows API для отправки сообщений целевого приложения и/или получения ограниченного доступа к данным в пределах своих элементов управления. Если у вас нет фона C/C++/VC/Win32, это может быть сложной задачей. Вам нужно будет ознакомиться с окнами api, структурами и т. Д.

Я мог бы указать вам на некоторые полезные ресурсы, но обратите внимание, что это не рекомендуется по многим причинам (включая безопасность и стабильность) и никогда не должен использоваться в сценарии производства.

EDIT

Если у вас нет доступа к исходному коду целевых приложений, и эти приложения не предоставляют API, термин межпроцессного взаимодействия здесь не действует. Вы, по сути, будете взламывать свой путь в эти приложения и должны знать о последствиях.

Поскольку вы не разработали эти приложения, ознакомьтесь с этой ссылкой. Как объяснялось в моем ответе, вы можете проверить целевое приложение с помощью инструмента, такого как Spy ++, для определения иерархии управления. Затем вы можете использовать Win API для отправки сообщений в элемент управления. Не имеет значения, построено ли целевое приложение в .NET, Jave или C.

В случае веб-приложений, будь то на локальной машине или на улице, вы можете очищать данные от существующих страниц, и вы можете отправлять данные из в вашем приложении. Посмотрите на методы string DownloadString (string address) и byte[] UploadValues (string address, string method, NameValueCollection data) класса System.Net.WebClient.

+0

http://stackoverflow.com/questions/8699950/csharp-to-java-jni-porting-call-to-run-on-ubuntu следует за этой вещью –

+0

Ok .. но это требование моего клиента, и поэтому это основная проблема для этого проекта. Я googled и нашел, что WCF может быть хорошим выбором для межпроцессного взаимодействия между двумя или более приложениями, запущенными в их собственных процессах. Поэтому, пожалуйста, предложите мне это. Кроме того, приложениями, которые будут выполняться в фоновом режиме, могут быть либо приложения Windows, приложения Java, либо веб-приложения. –

+0

И эти фоновые приложения будут доступны через приложение WinForm.Приложение foreground может считывать/записывать данные в фоновых приложениях, а также может инициировать такие события, как щелчок на кнопках фоновых приложений. –

Смежные вопросы