3

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

 protected override void OnStart(string[] args)
        {

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

        }

我想在 macro.exe 项目中使用 arguments 调用一个函数。有什么建议么

4

2 回答 2

2

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

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

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

于 2012-04-12T10:59:27.237 回答
0

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

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

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

于 2012-04-12T11:25:53.633 回答