【问题标题】:tray icon doesnt appear when app is run from process.start从 process.start 运行应用程序时不出现托盘图标
【发布时间】:2015-01-15 19:34:02
【问题描述】:

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

如果应用程序是使用 process.start 从服务启动的,则启动进程运行的同一个 EXE 文件,但不会出现托盘图标。

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

知道为什么应用程序对 process.start 的反应与对双击的反应不同吗?

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

【问题讨论】:

    标签: c# winforms service


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      相关资源
      最近更新 更多