如何在C#中向Windows服务传递参数?

3

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

 protected override void OnStart(string[] args)
        {

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

        }

我想在macro.exe项目中调用一个带参函数。有什么建议?
2个回答

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可能会继续扫描输入文件以从外部源(如您的应用程序)获取命令。或者更好的方法是,它监听一个端口,您可以在该端口上向其发送命令。

我不确定是否有其他更直接的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接