具有ShowInTaskbar、Topmost和通知区域图标的窗口

4

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

  1. 不在任务栏中显示,就像Windows声音、网络程序等一样作为小部件
  2. 在任务栏中显示 - 但不是最顶层。窗口仍将显示通知区域图标,并且应以与#1相同的方式运行,但也会在任务栏中显示窗口。
  3. 在任务栏中显示并保持在最顶层。窗口应与#2相同,但现在窗口将保持在最顶层。注意:它仍然可以被最小化,就像单击任务栏图标最小化程序一样。

这些是我的标准,我一直在努力让它们完美地协同工作,但似乎还有一些问题需要解决。#1很好 - 我已经很容易地解决了。#2和#3会引起更多问题。

我的第一个问题是,Windows如何处理用户单击任务栏图标来最小化/恢复正常?因为我希望用#2和#3来模拟它。

对于#1,我目前通过设置Window.VisibilityVisibility.Hidden来隐藏窗口。要显示窗口,请调用Show(),然后调用Activate()

就像我说的,对于#2和#3,我想复制Windows在用户单击任务栏图标时所做的操作。我能做到吗?还是我必须找到另一种方法来实现这个功能?


我们是在谈论一个应用程序中的一个窗口还是多个不同的窗口? - CodingBarfield
@CodingBarfield 这只是一个窗口。 - Harry
你无法模拟Windows的行为,程序在将窗口推到用户面前的能力上受到严格限制。这些规则在MSDN库文章“SetForegroundWindow”中有详细说明。 - Hans Passant
@HansPassant,真正困扰我的是如何以有效的方式隐藏窗口。例如,我不能使用Hide(),因为它会将程序从任务栏中移除。我也不能使用Visibility,因为它也会做同样的事情。 - Harry
如果您想保持任务栏按钮可见,请将窗口最小化。WindowState 属性。 - Hans Passant
我的问题是当窗口被激活/取消激活时,我正在更改通知区域图标。当它被取消激活时,它会被更改,但这会导致激活事件触发 - 这只会再次显示窗口。 - Harry
1个回答

0

1- 这被称为缩略图按钮 enter image description here enter image description here

你可以查看 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- 窗口类中有一个名为 TopMost 的属性。

3- 对于任务栏图标

在此输入图像描述 你可以使用这个库,它易于使用且功能强大 http://www.codeproject.com/Articles/22876/WPF-Taskbar-Notifier-A-WPF-Taskbar-Notification-Wi

4- 要最小化和最大化,您只需简单地使用

this.WindowState = FormWindowState.Maximized;

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

希望这可以帮助你...


谢谢,但我认为你误解了问题。我不想编写任务栏/制作 jumplist。 - Harry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接