使用C#包装器从任务栏中删除应用程序?

时间:2010-01-28 20:27:24

标签: c# windows-xp

有没有办法为现有应用程序构建一个C#包装器,允许我从任务栏中删除它?

更多信息:

我有一个计时器应用程序,我想使用但不要因为它很好......很糟糕。请参阅https://superuser.com/questions/92774/quickbooks-timer-replacement-windows

所以为了减少它,我想知道我是否可以构建一个包装器然后只是与该包装器进行交互。从任务栏中删除计时器,然后让我的应用程序隐藏/显示它将是朝这个方向迈出的一步。

另一种选择是对计时器进行逆向工程。但那是另一天的又一个项目。现在我很乐意隐藏这件事。

1 个答案:

答案 0 :(得分:1)

您需要找到任务栏中显示的窗口,并从其(扩展)样式中删除“在任务栏中显示”位。这将涉及下降到Windows API级别。您需要的功能是:

您需要删除的扩展样式位是WS_EX_APPWINDOW

请参阅SetWindowLongPtr文档,了解有关使用SetWindowLongPtr影响其他线程中的窗口的限制的信息,并可能需要调用SetWindowPos以进行可视更新。 Windows甚至可能会阻止您完全执行此操作(例如出于安全性或可用性原因)

我没有对此进行测试,这可能取决于目标应用程序。最后,如果这确实有效,它将完全从任务栏中删除窗口,这可能会让您在重新显示窗口时感到困惑,因此您的应用可能需要在显示其他应用程序窗口之前重新启用WS_EX_APPWINDOW样式