首页 文章

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

提问于
浏览
0

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

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

为了清楚,winforms应用程序将托盘图标放在适当的位置,而不是Windows服务 .

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

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

1 回答

  • 1

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

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

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

相关问题