在 Windows 服务中调用 Windows 应用程序

本文关键字:Windows 应用程序 调用 服务 | 更新日期: 2023-09-27 18:32:14

我正在研究类似于2010年提出的这个问题

如何在C#中使用Windows服务调用Windows应用程序?

这个答案可能是我的问题的解决方案

https://stackoverflow.com/a/2309089/1270384

虽然我不知道该怎么做。

想知道是否有人可以给我一个正在提到的内容或类似内容的示例,即提到的过程类,或者只是一个简短的示例,说明如何执行给定的说明。

更新

我有一个 Web 应用程序,可以检查我的数据库是否有对特定表的更改。我希望在我尝试创建的这个 Windows 服务中调用我的应用程序,我想安排每 20 秒运行一次。

我是Windows服务的新手,所以不太明白所解释的内容。

如有任何澄清,将不胜感激。

在 Windows 服务中调用 Windows 应用程序

在服务控制面板的登录选项卡上,选中"允许服务与桌面交互"复选框。 然后你可以做这样的事情。

public class WinService : ServiceBase
{
Process p = new Process();
public WinService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
RunApp();
}
private void RunApp()
{
p.StartInfo.FileName = @"<path to your app>";
p.StartInfo.Arguments = "<your params>";
p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
p.Start();
}
protected override void OnStop()
{
p.Kill();
}
}

编辑:参数传递:

列出 startInfo.Arguments 中的所有参数,用空格分隔它们。数字参数按原样列出,字符串参数在引号中列出。

例:

如果应用程序的命令行为:

YourApp.exe param1 "param two" param3

则您的 startInfo.Arguments 应设置为:

startInfo.Arguments = "param1 '"param two'" param3";

您始终可以将 Web 应用程序中的逻辑封装在一个单独的类中,您只需在服务中调用该类即可。

否则,您可以使用 WebClient 类调用您的网站。