如何在c#中将参数传递给windows服务?

时间:2012-04-12 10:49:53

标签: c# windows-services

我只想知道如何将参数传递给Windows服务。问题是,我开发了一个Windows应用程序,然后从Onstart()方法调用它。现在,我想从另一个项目调用特定的函数。

 protected override void OnStart(string[] args)
        {

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

        }

我想用参数调用macro.exe项目中的一个函数。任何建议

2 个答案:

答案 0 :(得分:2)

如果要使用传递给服务的参数,可以尝试:

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

请注意,使用@Tudor答案,您可以更好地控制已启动的进程,重定向输入/输出/错误,显示/隐藏窗口以及许多其他好处。

答案 1 :(得分:0)

我想知道你是否可以在另一个EXE中调用一个函数。 也许你可以制作一个通用的DLL并在macro.exe和你自己的应用程序中引用它。如果那不是一个选择,那么你可以使用套接字或文件系统与EXE进行通信。 例如。你传递了你的EXE 2命令行参数“MyFunction”,“Hello”,如上面的上述评论中所示,并且Exe抓住那些args推断它需要用参数Hello调用MyFunction并且获取结果EXE将其写入预定义路径,你从文件中读取它。

如果Exe正在运行并且您无法将命令行传递给它,则可能是Exe不断扫描输入文件以从您的应用程序等外部源获取命令。或者更好的是,它会在一个端口上侦听命令。

我不确定是否还有其他更明星的解决方案。