如何在 C# 中将参数传递给 Windows 服务

本文关键字:参数传递 Windows 服务 | 更新日期: 2023-09-27 18:30:47

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

 protected override void OnStart(string[] args)
        {
            Process.Start("C:''Program Files''macro.exe");
        }

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

如何在 C# 中将参数传递给 Windows 服务

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

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

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

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

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

我不确定是否有另一个更坚定的解决方案。