【问题标题】:How to create command line / windows service application with WPF window and system tray icon?如何使用 WPF 窗口和系统托盘图标创建命令行/Windows 服务应用程序?
【发布时间】:2013-12-29 15:37:01
【问题描述】:

问题:

显示托盘图标、窗口和命令行窗口并保持所有响应的最佳方式是什么?当命令行窗口关闭时,应用程序应该终止。

感谢您花在阅读和可能回答上的每一秒 :-)

新年快乐 :-)

背景:

我目前正在开发一个小型 Windows 应用程序。我正在使用 VS2012、C# 和 WPF。它从持续集成服务器获取构建状态,并在构建失败时做出反应。

我的计划是创建一个命令行 exe 和 windows 服务 exe。两者都应该在任务栏中创建一个系统托盘图标。单击托盘图标或在上下文菜单中应启动 WPF 窗口(用于配置服务器连接)。我为此准备了三个程序集,一个 cmd.exe、一个 service.exe 和 shared-logic-and-ui.dll(名称已更改)。

我创建了所有单个部分,但现在混合起来遇到了问题。我尝试的一切都会导致死锁、冻结的窗口、应用程序崩溃……我对多线程缺乏经验……

【问题讨论】:

  • 该服务无法显示通知区域图标,因为它不在交互式桌面中运行。
  • 好的...在我所有显示系统尝试的程序中是如何完成的?像病毒扫描、其他构建观察者、adobe updater 等等?
  • 通知图标只能从交互式桌面中运行的进程创建
  • 如果您正在寻找构建验证和错误报告,使用CruiseControl 不是很好吗?
  • 我有 TeamCity 用于构建验证和错误报告,但我创建了自己的工具来查询 TeamCity 服务器构建状态并在 UI 和 USB 交通灯上显示结果。

标签: c# wpf command-line windows-services system-tray


【解决方案1】:

我的解决方案: 我删除了控制台应用程序和 Windows 服务。我只创建 WPF 应用程序,但在启动时隐藏窗口并且只显示系统托盘图标。对于登录时启动,我添加了在 msiconfig 中找到的启动应用程序。

但无论如何: 可以从 Windows 服务创建 UI 进程。查看下一个链接。

Question on Stackoverflow: Show a windows form from a windows service

Accepted answer on codeproject

【讨论】:

    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多