如何创建没有任何窗口的任务栏按钮?

时间:2011-01-31 16:03:35

标签: c++ windows winapi

我有简单的无UI应用程序,然后将其转换为Windows服务。但是对于测试来说,看看它何时运行会很有用。所以我想创建一个任务栏按钮,因为其他具有UI的应用程序。是否可以通过合理的努力?

4 个答案:

答案 0 :(得分:4)

不,这是不可能的。任务栏上的按钮代表 windows 。你没有一个没有窗口的按钮,那个窗口需要可见。 (窗口可以具有将其放置在屏幕外的坐标,并且它可以具有零维度,但它需要具有WS_VISIBLE样式。)

另一种选择是创建通知图标。它也需要一个窗口,但窗口不一定是可见的。如果最终目标是将程序作为服务,那么获得该设置可能比您想要的更多。服务无法显示通知图标或有窗口。

最简单的改变可能就是让您的程序成为控制台程序。然后操作系统将为您创建一个控制台窗口。您的程序无需以任何方式创建或管理它。

答案 1 :(得分:1)

创建ITaskbarList类型的对象,然后在其上调用方法AddTab。您不需要可见窗口来实现此功能。一个虚拟的,不可见的窗口会做。 当然,如果您不使用上述方法手动添加窗口,则此窗口不会显示在任务栏中。

答案 2 :(得分:0)

创建一个自定义窗口类并保持窗口始终最小化或始终不可见(大小为0并位于-32767附近)

答案 3 :(得分:0)

Windows服务应该有UI。事实上,在Windows Vista和Windows 7中,它们在不同的会话中运行,无法访问桌面。

要监控您的服务,您需要编写另一个应用程序。通常这些应用程序使用隐藏窗口运行,并使用notification area与用户进行交互。