2012-04-12 87 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解决方案。