【问题标题】:Having a window with ShowInTaskbar, Topmost, but also a notification area icon有一个带有 ShowInTaskbar、Topmost 的窗口,还有一个通知区域图标
【发布时间】:2012-04-17 10:24:51
【问题描述】:

我有一个程序希望能够处理所有三种状态:

  1. 不显示在任务栏中,仅充当 Windows 声音、网络程序等小部件
  2. 显示在任务栏中 - 但不是最顶层。该窗口仍将显示通知区域图标,其行为仍应与 #1 相同,但也会在任务栏中显示该窗口。
  3. 显示在最顶部的任务栏中。窗口的行为应该与 #2 相同,但现在窗口将显示在最顶部。注意:它应该仍然能够被最小化,就像单击任务栏图标最小化程序一样。

这些是我的标准,我一直在努力让它们都很好地协同工作,但我似乎无法解决最后几个调整。 #1很好 - 我已经很容易地解决了这个问题。 #2 和 #3 会导致更多问题。

我的第一个问题是,Windows 如何处理用户单击任务栏图标以使其最小化/切换回正常状态?因为我更喜欢用 #2 和 #3 来模仿它。

对于#1,我目前只需将Window.Visibility 设置为Visibility.Hidden 即可隐藏窗口。要显示窗口,请拨打Show(),然后拨打Activate()

就像我说的,对于 #2 和 #3,我想复制 Windows 在用户单击任务栏图标时所做的事情。我可以这样做吗?还是我必须找到另一种方法来做到这一点?

【问题讨论】:

  • 我们说的是应用程序中的一个窗口还是多个不同的窗口?
  • @CodingBarfield 这只是一个窗口
  • 您无法模仿 Windows 所做的事情,程序在将窗口推到用户面前的能力受到严格限制。规则在 SetForegroundWindow 的 MSDN 库文章中列出。
  • @HansPassant 真正让我困扰的是以一种有效的方式隐藏窗口。例如,我不能使用 Hide(),因为它会从任务栏中删除程序。我也不能使用可见性,因为它做同样的事情。
  • 如果您想保持任务栏按钮可见,请最小化窗口。 WindowState 属性。

标签: c# wpf winapi


【解决方案1】:

1- 这称为缩略图按钮

您可以查看http://elegantcode.com/2010/12/17/wpf-adding-thumbnail-buttons-to-windows-7-task-bar/http://shareourideas.com/2010/12/19/windows-7-taskbar-thumbnail-buttons-in-wpf/http://msdn.microsoft.com/en-us/library/ff699128.aspx

2- Window 类中有一个名为 TopMost 的属性。

3-为任务栏图标

你可以使用这个易于使用且功能强大的库http://www.codeproject.com/Articles/22876/WPF-Taskbar-Notifier-A-WPF-Taskbar-Notification-Wi

4- 最小化和最大化你可以简单地使用

this.WindowState = FormWindowState.Maximized;

* 这就是您根据需要创建应用程序所需的所有信息,如果您遇到任何问题,请仔细阅读文章,如果问题仍然存在,请找到问题所在并再次询问。

希望对您有所帮助...

【讨论】:

  • 谢谢,但我认为您误解了这个问题。我不想对任务栏进行编程/制作跳转列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2010-11-20
相关资源
最近更新 更多