簡體   English   中英

c#應用程序如何調用帶有UI的外部windows應用程序?

[英]How to call an external windows application with UI by a c# application?

我們有一個帶有 GUI 的程序 ( A.exe ) 和一個工具欄,它用一些文本來做 NLP 的東西。 在該工具欄中,我們有function A ,它通過添加一些 xml 標簽來轉換文本。 這里有人(老板)希望我創建一個 Web 服務調用function A 它告訴我動態數據交換(他幾年前用過),我看到了類似SendMessage的東西。

Web 服務將被某些人通過 Inte.net 使用:發送文本並獲得xml的結果。 GUI程序在有人調用WS時無法啟動,因為太慢了,所以有人建議一次性啟動這個A.exe ,WS會通過DDE調用來詢問這個A.exe 我不知道A.exe在並發調用的情況下會如何反應。

Web 服務將:

  1. 將文本文件保存在目錄中
  2. 調用A.exe
  3. A.exe將計算文本文件並創建 xml 文件
  4. WS 將循環直到 xml 文件存在
  5. WS 將獲得 xml 並將其作為 stream 發送給原始呼叫者

我想指出:

  1. DDE 很舊,似乎需要一個支持 DDE 服務器的程序。
  2. SendMessage 有點晦澀,因為我是 Java 開發人員。
  3. 我沒有嘗試命名或匿名管道按照建議進行調用。

謝謝你。

PS:用UI調用服務端程序構建WS是邪教吧?

這個問題的答案實際上取決於您要完成的任務。 您的 function 是否更改來自外部數據源(例如數據庫)的數據,或者您是否在應用程序中調用 function?

我將從以下問題開始。

1)按鈕的function有什么作用? 能否將其功能轉移到服務中並在多個應用程序之間共享?

2)你能把功能放在 DLL 中並在兩個應用程序之間共享嗎?

3) 這兩個應用程序真的需要相互通信嗎?

如果這兩個進程必須相互通信,而您只希望應用程序 A 響應來自應用程序 B 的消息,請考慮使用命名管道進行 TCP/IP 通信。 這在 .NET 中足夠簡單,並提供進程之間的快速通信。

更新:這是一個鏈接,其中包含有關使用命名管道的信息: http://msdn.microsoft.com/en-us/library/bb546085.aspx

更新 2:這是您更新問題后的更新。 您有權訪問 A.exe 的源代碼嗎? 如果這樣做,您有兩個選擇:1) 將該邏輯移到您的服務中或 2) 修改 A.exe 以接受命令行參數,以便您的服務可以調用該流程並取回結果。 如果您沒有源代碼並且無法從命令行調用 A.exe,那么除了以 web 服務可以調用的形式自己編寫流程之外,您無能為力。

PS 你不必擔心並發調用,因為每個服務器請求都會執行一個單獨的進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM