从process.start运行应用程序时,托盘图标不会显示

时间:2015-01-15 19:34:03

标签: c# winforms service

我有一个C#/ winforms应用程序,最小化运行到系统托盘。如果我双击这个应用程序的EXE它按预期运行,我在任务管理器中看到该过程,图标出现在系统托盘中。我还有一个Windows服务,作为其他应用程序的监视器。如果winforms应用程序关闭,则服务重新启动将使用process.start

如果使用process.start从服务启动应用程序,则会触发相同的EXE文件,但进程会运行,但托盘图标不会显示。

要明确winforms应用程序将托盘图标放在适当位置而不是Windows服务。

知道为什么应用程序会对process.start做出不同的反应,而不是双击?

编辑:我可能已经部分回答了我自己的问题。该服务作为本地系统运行。不确定某些运行本地系统是否能够以双击相同的方式向我的用户系统托盘添加图标。这听起来像我在正确的轨道上吗?

1 个答案:

答案 0 :(得分:1)

是的,你走在正确的轨道上。服务在不同的会话中运行(会话0)。如果他们打开一个窗口(非常气馁),他们现在被称为“互动服务”。在这种情况下,Windows会弹出一个对话框(有关屏幕截图,请参阅MSDN blog。)

托盘图标可能会发生类似情况。由于您没有窗口,因此您没有获得交互式服务的弹出对话框,但托盘图标仍然存在于会话0中,因此您无法看到它。

如果您使用的是Windows 8,则完全使用交互式服务have been disabled (MSDN)