从Windows服务启动Windows窗体应用程序

时间:2014-01-28 08:10:22

标签: c# windows winforms

我创建了一个Windows服务,我想在其中启动Windows窗体应用程序。在该应用程序中,我已将表单边框样式设置为FixedToolWindow,当最小化时,它不会显示在任务栏中(我已将ShowInTaskbar设置为false)。所以我没有得到如何启动该应用程序。当我使用一个简单的Windows窗体应用程序时,它会启动并在TaskManager中显示进程,但GUI不会显示。

我在OnStart()方法中编写了以下代码来执行此操作。请建议更好的解决方案。另外为什么没有显示其他简单的应用程序UI?

p.StartInfo.FileName = @"Exe path";
p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
p.StartInfo.CreateNoWindow = true;
p.Start();

其中p是System.Diagnostics.Process class的对象。

1 个答案:

答案 0 :(得分:1)

Windows服务不会与登录用户在同一会话中运行,这不是执行此操作的方法。您通常在后台运行长期服务,然后:

  1. 用户手动启动可配置服务的应用程序,或

  2. 有一个已经运行的(托盘)应用程序,可能是在用户登录时启动的,可以通过服务发出警告来唤醒。

  3. 对于第二种情况,如果您只需要发送一个简单的“唤醒”调用,或者使用您想要的更复杂数据交换的任何进程间通信选项,则可以使用EventWaitHandle。后者通常基于套接字或命名管道,直接或通过WCF,Remoting或其他一些方便的技术。