2012-04-12 89 views
3

我只想知道如何將參數傳遞給Windows服務。問題是,我開發了一個Windows應用程序,然後從Onstart()方法調用它。現在,我想從另一個項目中調用特定的功能。如何將參數傳遞給C#中的Windows服務?

protected override void OnStart(string[] args) 
     { 

      Process.Start("C:\\Program Files\\macro.exe"); 

     } 

我想調用帶參數的macro.exe項目中的功能。任何建議

回答

2

如果你想使用傳遞給服務的參數,你可以嘗試:

Process.Start(@"C:\Program Files\macro.exe", String.Join(" ", args)) 

注意,使用@Tudor回答您可以對啓動過程中更好的控制,重定向輸入/輸出/錯誤,顯示/隱藏窗口和許多其他好東西。

0

我想知道是否可以在另一個EXE中調用一個函數。 也許你可以製作一個通用的DLL,並在macro.exe和你自己的應用程序中引用它。如果這不是一個選擇,那麼你可以使用套接字或文件系統與EXE進行通信。 例如。你將EXE 2的命令行參數「MyFunction」,「Hello」傳遞給前面的註釋,Exe抓住這些參數推斷出它需要用參數Hello調用MyFunction,並返回EXE寫入預定義的結果路徑,並從文件中讀取它。

如果exe文件運行時,你可以不通過命令行來,然後可能是EXE文件繼續掃描輸入文件,從喜歡你的應用程序的外部來源獲取的命令。或者更好的是它可以偵聽你向其發送命令的端口。

我不確定是否可以有更多的starightforward解決方案。