我创建了一个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的对象。
答案 0 :(得分:1)
Windows服务不会与登录用户在同一会话中运行,这不是执行此操作的方法。您通常在后台运行长期服务,然后:
用户手动启动可配置服务的应用程序,或
有一个已经运行的(托盘)应用程序,可能是在用户登录时启动的,可以通过服务发出警告来唤醒。
对于第二种情况,如果您只需要发送一个简单的“唤醒”调用,或者使用您想要的更复杂数据交换的任何进程间通信选项,则可以使用EventWaitHandle
。后者通常基于套接字或命名管道,直接或通过WCF,Remoting或其他一些方便的技术。