Можно ли подключиться или сделать вызов существующему процессу? - PullRequest
0 голосов
/ 15 июля 2010

В Windows в настоящее время у меня есть две программы, работающие следующим образом.Программа A вызывает программу B с некоторыми параметрами, в результате чего программа B возвращает некоторый текст, а затем завершает работу.Программа A снова вызывает Программу B с другими параметрами, что заставляет Программу B делать больше вещей.

Когда программа B запускается, ей требуется некоторое время, требующее загрузки.Описанный выше метод означает, что Программа B должна выполнить загрузку дважды.Можно ли загрузить Программу B только один раз?

Например, Программа A вызывает Программу B с некоторыми параметрами, в результате чего Программа B возвращает некоторый текст, но программа продолжает работать.Программа A вызывает тот же самый процесс снова, что заставляет Программу B делать больше вещей.

Возможно ли вышеизложенное, возможно, с использованием некоторого рода сообщений Windows?Программа A - это приложение Delphi, использующее метод Windows CreateProcess.Программа B - это приложение .NET, которое выполняет различные действия в соответствии с переданными параметрами. Я знаю, что мы можем сделать это, установив Программу B в качестве службы Windows, но я хотел бы избежать этого, если это возможно.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2010

В итоге мы создали Программу B, которая имеет невидимую форму, поэтому она работает непрерывно.Программа A отправляет сообщение Windows в Программу B всякий раз, когда требуется выполнить работу.Когда программа A выходит из программы, она отправляет сообщение «Quit» в программу B, программа B видит сообщение и также завершает работу.

0 голосов
/ 15 июля 2010

Здесь представлены технологии межпроцессного взаимодействия. .NET имеет WCF / веб-сервисы и т. Д. Для этого. Служба может быть размещена с использованием исполняемого файла (даже консольного приложения) или в качестве службы Windows. Вы также можете выбрать веб-сервер (IIS).

Поскольку ваша программа B находится в .NET, вы можете разместить ее в качестве службы и использовать ее в приложении Delphi. Я не знаю, с какой целью, вы хотите избежать службы. Но это положительно даст вам преимущество, и реализация довольно проста.

Даже если вы используете C / C ++ и т. Д., Вы можете подумать о том, чтобы обслуживать программу B как веб-сервис, используя обертки, такие как gSOAP.

...