2010-07-15 53 views
0

在Windows中,我目前有兩個程序如下工作。程序A用一些參數調用程序B,這導致程序B返回一些文本然後退出。程序A再次用其他參數調用程序B,這導致程序B做更多事情。是否可以連接或撥打現有流程?

當程序B啓動時,它需要做一些耗時的加載。上面的方法意味着程序B必須執行兩次加載。是否可以只加載一次程序B?

例如程序A用一些參數調用程序B,這會導致程序B返回一些文本,但程序繼續運行。程序A再次調用相同的過程,這導致程序B做更多的事情。

以上可能,也許使用某種Windows消息傳遞?程序A是一個Delphi應用程序,使用Windows的CreateProcess方法。程序B是一個.NET應用程序,根據傳入的參數執行各種操作。我知道我們可以通過將程序B安裝爲Windows服務來實現此目的,但是如果可能,我希望避免這種情況。

回答

0

我們最終創建了具有不可見形式的程序B,因此它可以持續運行。程序A只要需要完成工作,就會向程序B發送Windows消息。當程序A退出時,它向程序B發送「退出」消息,程序B也看到該消息並退出。

0

這是用於進程間通信的技術。 .NET有WCF/webservices等來做到這一點。該服務可以使用可執行文件(甚至是控制檯應用程序)或Windows服務託管。您也可以選擇網絡服務器(IIS)。

由於您的程序B在.NET中,您可以將其作爲服務託管並在Delphi應用程序中使用它。我不知道爲了什麼目的,你希望避免它是一項服務。但是這會給你帶來積極的影響,而且實現起來相當簡單。

即使在使用C/C++等的情況下,您也可以考慮使用gSOAP等包裝服務將程序B作爲web服務提供服務。

+0

我們想遠離使用服務,因爲它增加了我們安裝程序的複雜性。出於同樣的原因,我們也希望避免IIS/SOAP。這就是爲什麼我們希望如果有一些指導使用Windows消息來做到這一點。 – Robo 2010-07-21 03:15:04

相關問題