【问题标题】:Remove application from taskbar with C# wrapper?使用 C# 包装器从任务栏中删除应用程序?
【发布时间】:2011-01-10 14:12:19
【问题描述】:

有没有办法为现有应用程序构建一个 C# 包装器,让我可以将其从任务栏中删除?

更多信息:

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

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

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

【问题讨论】:

  • 你是指开始菜单吗?任务栏按钮?还是托盘图标?
  • 任务栏按钮。然后让我的应用程序放在系统托盘中。或者只是在桌面上。

标签: c# windows-xp


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2012-01-04
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多