2012-09-21 139 views
1

我有一個第三方應用程序,我可以通過VBScript編寫腳本。現在我想調用一個正在運行的.NET應用程序。如果我想用COM來做到這一點,我不得不使用ExeComServer。有一個問題,這在我的工作流程中是不可行的。 COM +服務器也是不可能的,因爲強名。我不得不將一個對象從VBScript轉發到.NET。在沒有COM的情況下從VBScript調用.NET應用程序。可能?

回答

1

如果COM不適合你,你可以嘗試使用VBScript的套接字,但是你會遇到各種各樣的問題。有一些第三方基於COM的套接字​​庫可以購買,但我從未使用過,所以我不推薦其中任何一個。您的.NET應用程序也必須進行相當程度的修改才能聽取端口並與您的腳本進行通信 - 這將是一些工作。

我能想到的另一種可能的選擇是在.NET中創建一個支持COM的.dll,爲您實現套接字邏輯並與您的.NET應用程序通信。然後,您可以從VBScript創建此對象的實例,並通過COM與它交談。您的.dll將使用套接字與.NET .exe進行通信。這給了你在套接字兩端的兩個.NET對象 - 在.NET中實現它更容易。您仍然必須更改主要的.exe才能收聽套接字。

這有些複雜,因爲VBScript被設計爲使用COM - 您不要使用COM的要求是您可以做什麼的限制因素。 (即使我的想法涉及一個COM對象,但至少它會刪除EXE COM服務器的需求。)可能有更簡單的選項 - 這只是我的頭頂。

+0

我認爲這是要做的。您可以嘗試使用命名管道和WCF設計.NET DLL客戶端代理,以便與您的服務器應用程序通信而不是Socket。然後,您可以嘗試COM啓用此.NET DLL客戶端代理,註冊它,然後在您的VBScript中使用它。 – Larry

+0

@Laurent是的,在.NET中使用WCF可能會更簡單。 – xxbbcc

0

調用正在運行的.NET應用程序的一種方法是從.NET應用程序公開WCF服務。 VBScript可以調用Web服務,例如使用XMLHTTP對象。

在另一方面,你也說:

我不得不從VBScript轉發對象.NET。

如果你這樣說你是指編組一個COM對象,我不認爲你有任何選擇,只能使用COM。

相關問題