2012-07-05 81 views
1

我想通過使用遠程處理和Windows服務啓動應用程序(在本例中爲記事本)。爲了測試,我試圖讓記事本運行。雖然我似乎建立了連接(在任務管理器的進程下,記事本正在運行),但我沒有看到窗口出現。我有一個用來發送命令的客戶端,通過輸入一個文本框並單擊一個按鈕來運行,服務應該能夠接收命令。有3個部分,以我的代碼:使用遠程處理和Windows服務執行C#應用程序

MyNewService:

namespace MyNewService 
{ 
    public partial class MyNewService : ServiceBase 
    { 
     bool serviceOn = false; 
     string command = String.Empty; 

     HttpChannel ch = new HttpChannel(4002); 


     public MyNewService() 
     { 
      InitializeComponent(); 

     } 

     protected override void OnStart(string[] args) 
     { 
      ChannelServices.RegisterChannel(ch); 
      RemotingConfiguration.RegisterWellKnownServiceType(typeof(Service.Test), "ServiceURI", WellKnownObjectMode.Singleton); 
     } 
    } 
} 

服務:

namespace Service 
{ 
    public class Test:MarshalByRefObject 
    { 

     public Test() 
     { 

     } 
     public void runCommand(string command) 
     { 
      Process myProcess = new Process(); 
      myProcess.StartInfo.FileName = command; 
      myProcess.Start(); 
     } 
    } 
} 

客戶

namespace Client 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     Test t; 
     string command; 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownClientType(typeof(Test), "http://remoteComp:4002/ServiceURI"); 
      t = new Test(); 
     } 


     private void button3_Click(object sender, EventArgs e) 
     { 
      command = textBox1.Text; 
      t.runCommand(command); 
     } 
    } 
} 

我已經到位的Windows服務的書面一個控制檯應用程序爲了測試窗口是否出現,窗口確實顯示出來。但是使用Windows服務時,該進程只能在後臺運行。

任何想法是怎麼回事?

回答

1

Windows服務不應該與用戶執行交互。請參閱DanielBrückner對此的回覆post。但丹尼爾給出了2個鏈接,但文章本身強烈建議避免這些技術。

+0

感謝您的回覆。我會研究它,看看我能做些什麼。 – user1504869 2012-07-05 23:01:42

相關問題