如何创建没有任何窗口的任务栏按钮?
Posted
技术标签:
【中文标题】如何创建没有任何窗口的任务栏按钮?【英文标题】:how to create taskbar button w/o any window? 【发布时间】:2011-01-31 16:03:34 【问题描述】:我有一个简单的无 UI 应用程序,然后将其转换为 Windows 服务。但是对于测试,查看它何时运行会很有用。所以我想像其他具有 UI 的应用程序一样创建一个任务栏按钮。是否可以通过合理的努力?
【问题讨论】:
Taskmgr.exe 可以显示进程,足够测试了。 @Hans:但不适合我的客户 您的客户正在测试您的代码?不寻常。 【参考方案1】:不,这是不可能的。任务栏上的按钮代表 windows。你不能有一个没有窗口的按钮,并且那个窗口需要是可见的。 (窗口可以具有将其置于屏幕之外的坐标,并且可以具有零尺寸,但它需要具有WS_VISIBLE
样式。)
另一个选项是创建一个通知图标。它也需要有一个窗口,但窗口不必是可见的。但是,如果最终目标是让程序成为一种服务,那么设置该设置可能比您想要的要多。服务不能显示通知图标或有窗口。
也许最简单的改变就是让你的程序成为一个控制台程序。然后操作系统将为您创建一个控制台窗口。您的程序不必以任何方式创建或管理它。
【讨论】:
【参考方案2】:创建一个ITaskbarList 类型的对象,然后在其上调用AddTab 方法。你不需要一个可见的窗口来工作。一个虚拟的、不可见的窗口就可以了。 当然,如果你不使用上面提到的方法手动添加,任务栏中不会出现这样的窗口。
【讨论】:
【参考方案3】:创建一个自定义窗口类并保持窗口始终最小化或始终不可见(大小为 0 且位置接近 -32767)
【讨论】:
【参考方案4】:Windows 服务应该有 UI。事实上,在 Windows Vista 和 Windows 7 中,它们在不同的会话中运行,并且无法访问桌面。
要监控您的服务,您需要编写另一个应用程序。通常此类应用程序在隐藏窗口中运行,并使用notification area 与用户进行交互。
【讨论】:
以上是关于如何创建没有任何窗口的任务栏按钮?的主要内容,如果未能解决你的问题,请参考以下文章