Получение значения текстового поля из стороннего приложения в C # - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь разработать фоновое работающее приложение на C #, которое должно определять, когда случайное стороннее приложение открывается, заполняется и нажимается кнопка.

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

Я читал кое-что об "анонимных каналах", но не знаю, могут ли они быть реализованы вкак этот случай и как.

Моя конечная цель - получить значение одного конкретного текстового поля в приложении, когда в этом же приложении нажата кнопка «Печать».Стороннее приложение не было разработано мной, поэтому я имею его только в формате .exe, но я вижу, что оно имеет текстовые поля, метки и кнопки.

1 Ответ

0 голосов
/ 22 января 2019

Что вам нужно, это межпроцессное взаимодействие Есть несколько подходов для решения вашей проблемы:

1. Использование общего хранилища данных

При нажатии кнопки печати вы можете установить флажок и текстовое поле в базе данных / файле. другое приложение может опросить, чтобы проверить, установлен ли этот флаг.

Как только это установлено, другое приложение может читать это из базы данных / файла.

2. Конечная точка WCF Net Pipe Binding может быть размещена в другом приложении.

Я бы предпочел эту опцию, если мне нужно отправить данные от одного процесса другому процессу на той же машине.
Ваше основное приложение будет иметь прокси службы wcf. Сервис Wcf будет частью другого приложения, которому нужно знать текстовое поле.

При нажатии кнопки «Печать» ваше основное приложение отправит текстовое поле в этот сервис WCF.

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

См. Пример из этого блога .

Могут быть и другие способы (например, хостинг веб-API, который разрешает доступ только с локального хоста). Выбор подхода зависит от высокого уровня дизайна ваших программ.

Надеюсь, это поможет

...